2022-05-23 13:39:59 +00:00
|
|
|
|
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>
|
2022-05-27 16:06:04 +00:00
|
|
|
|
public bool ShowNative(float x, float y, float width, float height,string adpos)
|
2022-05-23 13:39:59 +00:00
|
|
|
|
{
|
|
|
|
|
|
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);
|
2022-05-27 16:06:04 +00:00
|
|
|
|
toukaAds.ShowNative(x, y, width, height,adpos);
|
2022-05-23 13:39:59 +00:00
|
|
|
|
|
|
|
|
|
|
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.NewUserAdsCount.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.NewUserAdsCount.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.NewUserAdsCount.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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|