788 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			788 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.Collections;
 | ||
| using UnityEngine;
 | ||
| using System.Collections.Generic;
 | ||
| using Touka.GameLogic;
 | ||
| 
 | ||
| namespace Touka
 | ||
| {
 | ||
|     public partial class ToukaAdManager : ToukaSingletonMonoBehaviour<ToukaAdManager>
 | ||
|     {
 | ||
|         /// <summary>
 | ||
|         /// 标明当前界面是否可以显示banner
 | ||
|         ///
 | ||
|         /// banner load成功,如果当前可显示banner,就会直接显示出来
 | ||
|         /// </summary>
 | ||
|         public static bool isCurrCanShowBanner = true;
 | ||
| 
 | ||
|         #region Consts
 | ||
|         private const int RETRY_TIMES_COUNT = 3;       // 广告重试次数
 | ||
|         #endregion
 | ||
| 
 | ||
|         private int m_bannerRetryTimes = RETRY_TIMES_COUNT;     // bnner重试次数
 | ||
|         private int m_intersRetryTimes = RETRY_TIMES_COUNT;     // 插屏重试次数
 | ||
|         private int m_videoRetryTimes = RETRY_TIMES_COUNT;    // 激励视频重试次数
 | ||
|         private int m_nativeRetryTimes = RETRY_TIMES_COUNT;         // native重试次数
 | ||
| 
 | ||
|         private bool m_noAds = false;       // 是否有广告 true:没广告(除激励视频外) false:有广告 - 用于购买去广告后
 | ||
|         private bool m_initialized = false;
 | ||
| 
 | ||
|         public float NativeWidth = 0f;      // native 宽
 | ||
|         public float NativeHeight = 0f;     // native 高
 | ||
| 
 | ||
|         private IToukaAdInterface toukaAds;
 | ||
| 
 | ||
|         private Action<bool> mFocusGameAction = null;
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// init
 | ||
|         /// </summary>
 | ||
|         public void Init()
 | ||
|         {
 | ||
| 
 | ||
|             if (StaticOtherConfig.IsDebugLog)
 | ||
|             {
 | ||
|                 Debug.unityLogger.logEnabled = true;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.unityLogger.logEnabled = false;
 | ||
|             }
 | ||
| 
 | ||
|             if (m_initialized) return;
 | ||
|             m_initialized = true;
 | ||
| 
 | ||
| #if UNITY_EDITOR
 | ||
|             return;
 | ||
| #endif
 | ||
| 
 | ||
|             m_noAds = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasRemoveAds) != 0;
 | ||
| 
 | ||
|             NativeWidth = float.Parse(ToukaUtils.GetPlayerPrefsStringByKey(StaticStringsPlayerPrefs.NativeWidthSaved, "0"));
 | ||
|             NativeHeight = float.Parse(ToukaUtils.GetPlayerPrefsStringByKey(StaticStringsPlayerPrefs.NativeHeightSaved, "0"));
 | ||
| 
 | ||
|             toukaAds = ToukaSDKAdapter.Instance;
 | ||
| 
 | ||
|             // 初始化广告id,设置listener
 | ||
|             toukaAds.Init();
 | ||
| 
 | ||
|             Debug.Log("[ToukaAdManager] before loadads.");
 | ||
|             StartCoroutine(LoadAds());
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// load ads
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         IEnumerator LoadAds()
 | ||
|         {
 | ||
|             Debug.Log("[ToukaAdManager] IEnumerator LoadAds.");
 | ||
| 
 | ||
|             if (StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 Debug.Log("[ToukaAdManager] 初始化banner");
 | ||
|                 LoadBanner();
 | ||
| 
 | ||
|                 yield return new WaitForSeconds(2);
 | ||
|             }
 | ||
| 
 | ||
|             if (StaticStringsKey.RewardSwitch)
 | ||
|             {
 | ||
|                 Debug.Log("[ToukaAdManager] 初始化激励视频");
 | ||
|                 LoadVideo();
 | ||
| 
 | ||
|                 yield return new WaitForSeconds(2);
 | ||
|             }
 | ||
| 
 | ||
|             if (StaticStringsKey.InterSwitch)
 | ||
|             {
 | ||
|                 Debug.Log("[ToukaAdManager] 初始化插屏");
 | ||
|                 LoadInterstitial();
 | ||
| 
 | ||
|                 yield return new WaitForSeconds(2);
 | ||
|             }
 | ||
| 
 | ||
|             if (StaticStringsKey.NativeSwitch)
 | ||
|             {
 | ||
|                 Debug.Log("[ToukaAdManager] 初始化native");
 | ||
|                 LoadNative();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// refresh remove ads
 | ||
|         /// </summary>
 | ||
|         public void RefreshVIPStatus()
 | ||
|         {
 | ||
|             m_noAds = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasRemoveAds) != 0;
 | ||
|             if (m_noAds)
 | ||
|             {
 | ||
|                 HideBanner(true);
 | ||
|             }
 | ||
| 
 | ||
|             Debug.Log("[ToukaAdManager] 购买去广告成功,告诉SDK不再显示开屏!!");
 | ||
|         }
 | ||
| 
 | ||
|         #region banner
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// show banner
 | ||
|         /// </summary>
 | ||
|         public void ShowBanner()
 | ||
|         {
 | ||
| #if UNITY_EDITOR
 | ||
|             return;
 | ||
| #endif
 | ||
|             if (!StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             Debug.Log("in ToukaAdManager, ShowBanner.");
 | ||
|             if (m_noAds)
 | ||
|             {
 | ||
|                 Debug.Log("Touka: VIP don't show banner");
 | ||
|                 toukaAds.RemoveBanner(true);
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             if (!isCurrCanShowBanner)
 | ||
|             {
 | ||
|                 Debug.Log("Touka: this view cannot show banner");
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             Debug.Log("Touka: Show banner real ");
 | ||
|             toukaAds.ShowBanner();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// force reload banner
 | ||
|         /// </summary>
 | ||
|         public void ForceReloadBanner()
 | ||
|         {
 | ||
|             Debug.Log("Touka: ForceReloadBanner");
 | ||
|             if (!StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             LoadBanner();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// Hides the banner.
 | ||
|         /// </summary>
 | ||
|         /// <param name="_clean">true:remove  false:hide</param>
 | ||
|         public void HideBanner(bool _clean)
 | ||
|         {
 | ||
| #if UNITY_EDITOR
 | ||
|             return;
 | ||
| #endif
 | ||
|             Debug.Log("in ToukaAdManager, HideBanner, _clean:" + _clean);
 | ||
| 
 | ||
|             if (!StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
|             toukaAds.RemoveBanner(_clean);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// isReady Banner
 | ||
|         /// </summary>
 | ||
|         public bool IsReadyBanner
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
| #if UNITY_EDITOR
 | ||
|                 return true;
 | ||
| #endif
 | ||
|                 return toukaAds.IsReadyBanner();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 插屏 Interstitial
 | ||
|         /// <summary>
 | ||
|         /// show iv
 | ||
|         /// </summary>
 | ||
|         /// <param name="callback"></param>
 | ||
|         /// <param name="_interId"></param>
 | ||
|         /// <param name="_extraParam"></param>
 | ||
|         public void ShowInterstitial(Action<ToukaIntersitialStatus> callback, string _extraParam = "")
 | ||
|         {
 | ||
| 
 | ||
| #if UNITY_EDITOR
 | ||
|             Debug.Log("[ToukaAdManager] Show Interstitial call");
 | ||
|             if (callback != null) callback(ToukaIntersitialStatus.FAIL);
 | ||
|             return;
 | ||
| #endif
 | ||
| 
 | ||
|             if (m_noAds)
 | ||
|             {
 | ||
|                 Debug.Log("[ToukaAdManager] VIP don't show interstitial");
 | ||
|                 if (callback != null) callback(ToukaIntersitialStatus.FAIL);
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             Debug.Log("[ToukaAdManager] Show Interstitial ");
 | ||
| 
 | ||
|             if (toukaAds.IsReadyIntersitial())
 | ||
|             {
 | ||
|                 ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_iv_success);
 | ||
|                 toukaAds.ShowIntersitial((status) => {
 | ||
|                     if (status == ToukaIntersitialStatus.CLOSE || status == ToukaIntersitialStatus.FAIL)
 | ||
|                     {
 | ||
|                         FocusOnGame(true);     // 回到游戏
 | ||
| 
 | ||
|                         if (callback != null) callback(status);     // 回调改到这里了
 | ||
|                         LoadInterstitial();
 | ||
|                         if (status == ToukaIntersitialStatus.FAIL)      // 如果是失败回调,就做失败打点
 | ||
|                         {
 | ||
|                             ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_iv_ad_show_failed, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _extraParam } });
 | ||
|                         }
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(false);
 | ||
|                     }
 | ||
|                     else if (status == ToukaIntersitialStatus.SHOW)
 | ||
|                     {
 | ||
|                         FocusOnGame(false);     // 离开游戏
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(true);
 | ||
|                         Debug.Log("[ToukaAdManager] UMENG 插屏SHOW上报");
 | ||
|                         ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_iv_ad_show, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _extraParam } });
 | ||
|                         ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ivrv_ad_show);
 | ||
| 
 | ||
|                         CheckIn24UploadToConversionValue();
 | ||
|                         IncreateVideoAndIntersitialShowCount(false);
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 if (callback != null) callback(ToukaIntersitialStatus.FAIL);
 | ||
|                 ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_iv_failure);
 | ||
|                 LoadInterstitial();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// isReady iv
 | ||
|         /// </summary>
 | ||
|         /// <param name="_interId"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public bool IsReadyIntersitial()
 | ||
|         {
 | ||
| #if UNITY_EDITOR
 | ||
|             return false;
 | ||
| #endif
 | ||
|             bool isReadyInter = toukaAds.IsReadyIntersitial();
 | ||
|             Debug.Log("[ToukaAdManager] isReadyInter : " + isReadyInter);
 | ||
|             return isReadyInter;
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 激励视频 RewardVideo
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// show video
 | ||
|         /// </summary>
 | ||
|         /// <param name="_callback"></param>
 | ||
|         /// <param name="_videoPlace"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public bool ShowVideo(Action<ToukaVideoStatus> _callback, ToukaVideoPlace _videoPlace)
 | ||
|         {
 | ||
| 
 | ||
|             ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ad_button_click, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
 | ||
| #if UNITY_EDITOR
 | ||
|             _callback(ToukaVideoStatus.SUCCESS);
 | ||
|             return true;
 | ||
| #endif
 | ||
|             if (toukaAds.IsReadyVideo())
 | ||
|             {
 | ||
|                 ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_rv_success, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
 | ||
|                 toukaAds.ShowVideo((status) =>
 | ||
|                 {
 | ||
|                     AutoIntersititialManager.Instance.PauseTimer(true);
 | ||
|                     if (status == ToukaVideoStatus.CLOSE)
 | ||
|                     {
 | ||
|                         FocusOnGame(true);     // 回到游戏
 | ||
|                         LoadVideo();
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(false);
 | ||
|                     }
 | ||
|                     if (status == ToukaVideoStatus.SHOW)
 | ||
|                     {
 | ||
|                         FocusOnGame(false);     // 离开游戏
 | ||
|                                                 // 播激励视频上报打点
 | ||
|                         Debug.Log("UMENG 播激励视频上报打点");
 | ||
|                         ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_rv_ad_show, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
 | ||
|                         ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ivrv_ad_show);
 | ||
|                         CheckIn24UploadToConversionValue();
 | ||
|                         IncreateVideoAndIntersitialShowCount(true);
 | ||
|                         //Time.timeScale = 0.0f;
 | ||
|                     }
 | ||
|                     if (status == ToukaVideoStatus.CANCEL)
 | ||
|                     {
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(false);
 | ||
|                     }
 | ||
|                     if (status == ToukaVideoStatus.FAIL)
 | ||
|                     {
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(false);
 | ||
|                         ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_rv_ad_show_fail, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
 | ||
|                     }
 | ||
|                     if (status == ToukaVideoStatus.SUCCESS)
 | ||
|                     {
 | ||
|                         AutoIntersititialManager.Instance.PauseTimer(false);
 | ||
|                     }
 | ||
|                     if (_callback != null) _callback(status);
 | ||
| 
 | ||
|                 });
 | ||
|                 return true;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 if (_callback != null) _callback(ToukaVideoStatus.FAIL);
 | ||
| 
 | ||
|                 Debug.Log("Touka: Don't show Video for hasAdReady is NO");
 | ||
|                 //PopupTipsPanel.PopupTips(LocalizationManager.GetTermTranslation("1045"));
 | ||
|                 ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_rv_failure, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
 | ||
| 
 | ||
|                 LoadVideo();
 | ||
|                 return false;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// isReady RV
 | ||
|         /// </summary>
 | ||
|         public bool IsReadyVideo
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
| #if UNITY_EDITOR
 | ||
|                 return true;
 | ||
| #endif
 | ||
|                 if (toukaAds.IsReadyVideo())
 | ||
|                 {
 | ||
|                     Debug.Log("[ToukaAdManager] IsReadyVideo = true. ");
 | ||
|                     return true;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     LoadVideo();
 | ||
|                     Debug.Log("[ToukaAdManager] IsReadyVideo = false. ");
 | ||
|                     return false;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region native
 | ||
|         /// <summary>
 | ||
|         /// isReady Native
 | ||
|         /// </summary>
 | ||
|         public bool IsReadyNative
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
| #if UNITY_EDITOR
 | ||
|                 return false;
 | ||
| #endif
 | ||
|                 return toukaAds.IsReadyNative();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// show native
 | ||
|         /// </summary>
 | ||
|         /// <param name="x"></param>
 | ||
|         /// <param name="y"></param>
 | ||
|         /// <param name="width"></param>
 | ||
|         /// <param name="height"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public bool ShowNative(float x, float y, float width, float height,string adpos)
 | ||
|         {
 | ||
|             Debug.Log("ShowNative()");
 | ||
| #if UNITY_EDITOR
 | ||
|             return false;
 | ||
| #endif
 | ||
|             Debug.Log("[ToukaAdManager] ShowNative with frame, before isReadyNative");
 | ||
|             if (m_noAds)
 | ||
|             {
 | ||
|                 Debug.Log("Touka: VIP don't ShowNative");
 | ||
|                 toukaAds.RemoveNative(true);
 | ||
|                 return false;
 | ||
|             }
 | ||
|             if (IsReadyNative)
 | ||
|             {
 | ||
|                 Debug.Log("Touka: ShowNative, x : " + x + " , y : " + y + " , width : " + width + " , height : " + height);
 | ||
|                 toukaAds.ShowNative(x, y, width, height,adpos);
 | ||
| 
 | ||
|                 return true;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 LoadNative();
 | ||
|             }
 | ||
| 
 | ||
|             return false;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// set native bounds first
 | ||
|         /// </summary>
 | ||
|         /// <param name="width"></param>
 | ||
|         /// <param name="height"></param>
 | ||
|         public void SetNativeBoundsFist(float width, float height)
 | ||
|         {
 | ||
|             if (ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeWidth, 0) && ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeHeight, 0))
 | ||
|             {
 | ||
|                 Debug.Log("inner ---- SetNativeBoundsFist, width : " + width + " , height : " + height);
 | ||
|                 ToukaAdManager.Instance.NativeWidth = width;
 | ||
|                 ToukaAdManager.Instance.NativeHeight = height;
 | ||
| 
 | ||
|                 ToukaUtils.SavePlayerPrefsStringByKeyValue(StaticStringsPlayerPrefs.NativeWidthSaved, ToukaAdManager.Instance.NativeWidth.ToString());
 | ||
|                 ToukaUtils.SavePlayerPrefsStringByKeyValue(StaticStringsPlayerPrefs.NativeHeightSaved, ToukaAdManager.Instance.NativeHeight.ToString());
 | ||
| 
 | ||
|                 ToukaAdManager.Instance.LoadNative();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// hide native
 | ||
|         /// </summary>
 | ||
|         /// <param name="_clean"></param>
 | ||
|         public void HideNative(bool _clean)
 | ||
|         {
 | ||
| #if UNITY_EDITOR
 | ||
|             return;
 | ||
| #endif
 | ||
|             if (toukaAds != null)
 | ||
|             {
 | ||
|                 toukaAds.RemoveNative(_clean);
 | ||
|                 if (_clean == false)
 | ||
|                 {
 | ||
|                     LoadNative();
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region Load & Reload
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// load banner
 | ||
|         /// </summary>
 | ||
|         public void LoadBanner()
 | ||
|         {
 | ||
|             Debug.Log("Touka: LoadBanner");
 | ||
| #if UNITY_EDITOR
 | ||
|             return;
 | ||
| #endif
 | ||
|             if (!StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
|             if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|             {
 | ||
|                 Debug.Log("start to load banner");
 | ||
|                 toukaAds.LoadBanner((success) => {
 | ||
|                     if (success)
 | ||
|                     {
 | ||
|                         Debug.Log("in ToukaAdManager, loadBanner. success");
 | ||
|                         m_bannerRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                         if (isCurrCanShowBanner)
 | ||
|                         {
 | ||
|                             Debug.Log("可以显示banner");
 | ||
|                             ShowBanner();
 | ||
|                         }
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         Debug.Log("load banner fail");
 | ||
|                         ReLoadBanner();
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.Log("Touka: Don't load banner for NetworkReachability.NotReachable");
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// load iv
 | ||
|         /// </summary>
 | ||
|         public void LoadInterstitial()
 | ||
|         {
 | ||
|             if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|             {
 | ||
|                 toukaAds.LoadInterstitial((success) =>
 | ||
|                 {
 | ||
|                     if (success)
 | ||
|                     {
 | ||
|                         Debug.Log("加载插屏广告成功");
 | ||
|                         m_intersRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                         CancelInvoke();
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         Debug.Log("加载插屏广告失败,重新加载:" + m_intersRetryTimes);
 | ||
| #if UNITY_IOS
 | ||
|                         ReloadInterstitial();
 | ||
| #endif
 | ||
| 
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.Log("Touka: Don't load interstitial for NetworkReachability.NotReachable");
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// load rv
 | ||
|         /// </summary>
 | ||
|         public void LoadVideo()
 | ||
|         {
 | ||
|             if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|             {
 | ||
|                 toukaAds.LoadVideo((success) =>
 | ||
|                 {
 | ||
|                     if (success)
 | ||
|                     {
 | ||
|                         m_videoRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         ReloadVideo();
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.Log("Touka: Don't load video for NetworkReachability.NotReachable");
 | ||
|             }
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// load native
 | ||
|         /// </summary>
 | ||
|         public void LoadNative()
 | ||
|         {
 | ||
|         if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|         {
 | ||
| 
 | ||
|             if(toukaAds != null)
 | ||
|             {
 | ||
|                 toukaAds.LoadNative((success) =>
 | ||
|                 {
 | ||
|                     if (success)
 | ||
|                     {
 | ||
|                         Debug.Log("native 加载成功");
 | ||
|                         m_nativeRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         Debug.Log("native 加载失败");
 | ||
|                         ReloadNative();
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|         }
 | ||
|         else
 | ||
|         {
 | ||
|             Debug.Log("Touka: Don't load native for NetworkReachability.NotReachable");
 | ||
|         }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// reload banner
 | ||
|         /// </summary>
 | ||
|         private void ReLoadBanner()
 | ||
|         {
 | ||
|             if (!StaticStringsKey.BannerSwitch)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
|             Debug.Log("Touka: ReLoadBanner times :" + m_bannerRetryTimes);
 | ||
|             if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|             {
 | ||
|                 if (m_bannerRetryTimes > 0)
 | ||
|                 {
 | ||
|                     m_bannerRetryTimes--;
 | ||
|                     Debug.Log("has times count, go on load again");
 | ||
|                     LoadBanner();
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     Debug.Log("no times count, don't load again");
 | ||
|                     m_bannerRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                 }
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.Log("Touka: Don't Reload banner for NetworkReachability.NotReachable");
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// reload video
 | ||
|         /// </summary>
 | ||
|         private void ReloadVideo()
 | ||
|         {
 | ||
|             Debug.Log("Touka: ReLoadVideo, times : " + m_videoRetryTimes);
 | ||
|             if (Application.internetReachability != NetworkReachability.NotReachable)
 | ||
|             {
 | ||
|                 if (m_videoRetryTimes > 0)
 | ||
|                 {
 | ||
|                     m_videoRetryTimes--;
 | ||
|                     LoadVideo();
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     m_videoRetryTimes = RETRY_TIMES_COUNT;
 | ||
|                 }
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 Debug.Log("Touka: Don't Reload video for NetworkReachability.NotReachable");
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// reload iv
 | ||
|         /// </summary>
 | ||
|         private void ReloadInterstitial()
 | ||
|         {
 | ||
|             Debug.Log("Touka: ReLoadInterstitial, times:" + m_intersRetryTimes);
 | ||
|             if (m_intersRetryTimes > 0)
 | ||
|             {
 | ||
|                 m_intersRetryTimes--;
 | ||
|                 LoadInterstitial();
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 m_intersRetryTimes = RETRY_TIMES_COUNT;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// reload native
 | ||
|         /// </summary>
 | ||
|         private void ReloadNative()
 | ||
|         {
 | ||
|             Debug.Log("Touka: ReloadNative. times : " + m_nativeRetryTimes);
 | ||
|             if (m_nativeRetryTimes > 0)
 | ||
|             {
 | ||
|                 m_nativeRetryTimes--;
 | ||
|                 LoadNative();
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 m_nativeRetryTimes = RETRY_TIMES_COUNT;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region Utils below
 | ||
| 
 | ||
|         // Utils below ////////////////////////////////////////////////////////////////
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 判断 插屏+激励视频 总次数,是否达到了上报总次数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         private bool IncreateVideoAndIntersitialShowCount(bool _video)
 | ||
|         {
 | ||
|             if (!ToukaUtilsInner.Instance.isFirstDayLogin)      // 非首日登录
 | ||
|             {
 | ||
|                 return false;
 | ||
|             }
 | ||
| 
 | ||
|             string playerPrefsKey = StaticStringsPlayerPrefs.IntersitialShowCount;
 | ||
|             if (_video)
 | ||
|             {
 | ||
|                 playerPrefsKey = StaticStringsPlayerPrefs.VideoShowCount;
 | ||
|             }
 | ||
| 
 | ||
|             // 记录 插屏/激励视频 展示次数
 | ||
|             var showCount = ToukaUtils.GetPlayerPrefsIntByKey(playerPrefsKey);
 | ||
|             ToukaUtils.SavePlayerPrefsIntByKeyValue(playerPrefsKey, showCount + 1);
 | ||
| 
 | ||
|             // 读取 插屏 + 激励视频 总次数
 | ||
|             var videoCount = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.VideoShowCount);
 | ||
|             var intersitialCount = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.IntersitialShowCount);
 | ||
| 
 | ||
|             Debug.Log("激励视频+插屏次数:" + (videoCount + intersitialCount) + ", rv onlineCount : " + TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserRVCount.ToString()) + " , ads onlineCount : " + TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserPvCount.ToString()));
 | ||
| 
 | ||
|             //if (videoCount >= int.Parse(StaticOnlineParams.NewUserRVCountOnlineParams.DefaultValue))
 | ||
|             //{
 | ||
|             //    if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasTenjinUploadRVCount))
 | ||
|             //    {
 | ||
|             //        Debug.Log(string.Format("看激励视频达到{0}次,上报tenjin. ", videoCount));
 | ||
|             //        //ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_NewUserRVCount);     // 暂时没要求上报了  // 上报新用户观看激励视频次数
 | ||
|             //    }
 | ||
|             //}
 | ||
| 
 | ||
|             if ((videoCount + intersitialCount) >= TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserPvCount.ToString()))
 | ||
|             {
 | ||
|                 if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasTenjinUploadADSCount))
 | ||
|                 {
 | ||
|                     Debug.Log(string.Format("看视频广告达到{0}次,上报tenjin. ", videoCount + intersitialCount));
 | ||
|                     ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserAdsCount);
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             return videoCount + intersitialCount >= TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserPvCount.ToString());
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// iOS 14要求,24h 内新安装用户 有观看 插屏/激励视频, 则上报。
 | ||
|         /// </summary>
 | ||
|         private void CheckIn24UploadToConversionValue()
 | ||
|         {
 | ||
|             Debug.Log("CheckIn24UploadToConversionValue");
 | ||
| 
 | ||
|             if (ToukaUtils.GetPlayerPrefsIntByKey("Has24UploadToConversionValue") == 1)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|             if (ToukaUtils.isNewUser())
 | ||
|             {
 | ||
|                 Debug.Log("UpdateConversionValue 000011");
 | ||
| #if !NO_SDK
 | ||
|                 TGiOSAdManager.Instance.UpdateConversionValue("000011");
 | ||
| #endif
 | ||
|                 ToukaUtils.SavePlayerPrefsIntByKeyValue("Has24UploadToConversionValue", 1);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         public void SetGameFocusAction(Action<bool> pGameFocusAction)
 | ||
|         {
 | ||
|             mFocusGameAction = pGameFocusAction;
 | ||
|         }
 | ||
| 
 | ||
|         private void FocusOnGame(bool pFocus)
 | ||
|         {
 | ||
|             if (mFocusGameAction == null)
 | ||
|             {
 | ||
|                 AudioListener.pause = !pFocus;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 mFocusGameAction(pFocus);
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| } |