public virtual void TrackAdsClick(AFramework.Ads.AdsType adsType)
        {
            switch (adsType)
            {
            case Ads.AdsType.Banner:
                TrackEvent("ADS_BANNER_CLICK");
                break;

            case Ads.AdsType.Interstitial:
                if (mRewardAdsTrackingCacheData != null)    //should be Ads.AdsType.InterstitialRewardedVideo
                {
                    TrackEvent("ADS_REWARD_INTERSTITIAL_CLICK", mRewardAdsTrackingCacheData);
                }
                else
                {
                    TrackEvent("ADS_INTERSTITIAL_CLICK");
                }
                break;

            case Ads.AdsType.RewardedVideo:
                TrackEvent("ADS_REWARD_CLICK", mRewardAdsTrackingCacheData);
                break;
            }

            {
                var parameters = new Dictionary <string, object>();
                parameters["af_adrev_ad_type"] = adsType.ToString();
                TrackLimitedEvent("af_ad_click", parameters);
            }
        }
        public virtual void TrackAdsView(AFramework.Ads.AdsType adsType, Dictionary <string, object> args)
        {
            mRewardAdsTrackingCacheData = null;
            switch (adsType)
            {
            case Ads.AdsType.Banner:
                TrackEvent("ADS_BANNER_IMPRESSION", args);
                break;

            case Ads.AdsType.Interstitial:
                TrackEvent("ADS_INTERSTITIAL_IMPRESSION", args);
                TrackLimitedEvent("af_ad_view_interstitial");
                break;

            case Ads.AdsType.RewardedVideo:
                mRewardAdsTrackingCacheData = args;
                TrackEvent("ADS_REWARD_IMPRESSION", args);
                TrackLimitedEvent("af_ad_view_rewarded");
                break;

            case Ads.AdsType.InterstitialRewardedVideo:
                mRewardAdsTrackingCacheData = args;
                TrackEvent("ADS_REWARD_INTERSTITIAL_IMPRESSION", args);
                TrackLimitedEvent("af_ad_view_rewarded");
                break;

            case Ads.AdsType.OfferWall:
                TrackEvent("ADS_OFFERWALL_IMPRESSION", args);
                break;
            }
        }
        public virtual void TrackAdsReady(AFramework.Ads.AdsType adsType, Dictionary <string, object> args)
        {
            switch (adsType)
            {
            case Ads.AdsType.Banner:
                TrackEvent("ADS_BANNER_REQUEST", args);
                break;

            case Ads.AdsType.Interstitial:
                TrackEvent("ADS_INTERSTITIAL_REQUEST", args);
                break;

            case Ads.AdsType.RewardedVideo:
                mRewardAdsTrackingCacheData = args;
                TrackEvent("ADS_REWARD_REQUEST", args);
                break;

            case Ads.AdsType.OfferWall:
                TrackEvent("ADS_OFFERWALL_REQUEST", args);
                break;
            }
        }