502 lines
16 KiB
C#
502 lines
16 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Runtime.InteropServices;
|
||
using AOT;
|
||
using UnityEngine;
|
||
|
||
namespace Touka
|
||
{
|
||
/// <summary>
|
||
/// 广告SDK内部处理
|
||
/// </summary>
|
||
public class ToukaSDKAdapter : IToukaAdInterface
|
||
{
|
||
/// <summary>
|
||
/// banner 位置
|
||
/// </summary>
|
||
public enum ToukaBannerAlign : int
|
||
{
|
||
BannerCenterBottomAlign = 34,
|
||
BannerCenterTopAlign = 10,
|
||
}
|
||
|
||
// banner是否已展示
|
||
private bool m_bannerHasShowed = false;
|
||
// banner是否已加载
|
||
private bool m_bannerLoaded = false;
|
||
|
||
private System.Action<bool> m_bannerLoadCallback; // banner加载回调
|
||
private System.Action<bool> m_intersitialLoadCallback; // 插屏加载回调
|
||
private System.Action<bool> m_videoLoadCallback; // 激励视频加载回调
|
||
private System.Action<bool> m_nativeLoadCallback; // native加载回调
|
||
|
||
private System.Action<ToukaVideoStatus> m_videoShowCallback; // 激励视频展示回调
|
||
private System.Action<ToukaIntersitialStatus> m_intersitialShowCallback; // 插屏展示回调
|
||
|
||
private static ToukaSDKAdapter s_instance;
|
||
public static ToukaSDKAdapter Instance
|
||
{
|
||
get
|
||
{
|
||
if (s_instance == null)
|
||
{
|
||
s_instance = new ToukaSDKAdapter();
|
||
}
|
||
return s_instance;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// init
|
||
/// </summary>
|
||
public void Init()
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
Debug.Log("[ToukaSDKAdapter] init iOS");
|
||
ToukaCallbackInit();
|
||
TGiOSAdManager.Instance.InitSDK(StaticStringsKey.TOUKA_SDK_APPID, StaticStringsKey.TOUKA_SDK_APPKEY);
|
||
#elif UNITY_ANDROID
|
||
Debug.Log("[ToukaSDKAdapter] init android");
|
||
ToukaCallbackInit();
|
||
TGAndroidAdManager.Instance.InitSDK(StaticStringsKey.TOUKA_SDK_APPID,StaticStringsKey.TOUKA_SDK_APPKEY);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// sdk 回调
|
||
/// </summary>
|
||
private void ToukaCallbackInit()
|
||
{
|
||
TGUniversalFunc.onSetNativeBannerListener_onAdLoaded += onNativeBannerAdLoaded;
|
||
TGUniversalFunc.onSetNativeBannerListener_onAdLoadFail += onNativeBannerAdLoadFail;
|
||
|
||
TGUniversalFunc.onSetBannerListener_onAdLoaded += onBannerAdLoad;
|
||
TGUniversalFunc.onSetBannerListener_onAdFailedToLoad += onBannerAdLoadFail;
|
||
|
||
TGUniversalFunc.onSetNativeListener_onAdLoaded += onNativeAdLoaded;
|
||
TGUniversalFunc.onSetNativeListener_onAdFailedToLoad += onNativeAdLoadFail;
|
||
|
||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdClosed += onRewardedVideoAdPlayClosed;
|
||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdFailedToLoad += onRewardedVideoAdLoadFail;
|
||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdLoaded += onRewardedVideoAdLoaded;
|
||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdPlayFail += onRewardedVideoAdPlayFail;
|
||
TGUniversalFunc.onSetRewardListener_onRewardedVideoStarted += onRewardedVideoAdPlayStart;
|
||
|
||
|
||
TGUniversalFunc.onSetInterstitialListener_onAdClosed += onInterstitialAdClose;
|
||
TGUniversalFunc.onSetInterstitialListener_onAdFailedToLoad += onInterstitialAdLoadFail;
|
||
TGUniversalFunc.onSetInterstitialListener_onAdLoaded += onInterstitialAdLoad;
|
||
TGUniversalFunc.onSetInterstitialListener_onShowFailed += onInterstitialAdFailedToShow;
|
||
TGUniversalFunc.onSetInterstitialListener_onShowSuccess += onInterstitialAdShow;
|
||
}
|
||
|
||
#region 广告 IsReady 接口
|
||
|
||
/// <summary>
|
||
/// 插屏 IsReady
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool IsReadyIntersitial()
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
return TGiOSAdManager.Instance.IsReadyinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#elif UNITY_ANDROID
|
||
return TGAndroidAdManager.Instance.IsReadyinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#endif
|
||
return false;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 激励视频 IsReady
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool IsReadyVideo()
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
return TGiOSAdManager.Instance.IsReadyVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||
#elif UNITY_ANDROID
|
||
return TGAndroidAdManager.Instance.IsReadyVideo(StaticStringsKey.TOUKA_SDK_REWARDID) ;
|
||
#endif
|
||
return false;
|
||
}
|
||
|
||
/// <summary>
|
||
/// banner IsReady
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool IsReadyBanner()
|
||
{
|
||
return m_bannerLoaded;
|
||
}
|
||
|
||
/// <summary>
|
||
/// native IsReady
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool IsReadyNative()
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
return TGiOSAdManager.Instance.IsReadNative(StaticStringsKey.TOUKA_SDK_NATIVEID);
|
||
#elif UNITY_ANDROID
|
||
return TGAndroidAdManager.Instance.IsReadNative(StaticStringsKey.TOUKA_SDK_NATIVEID) ;
|
||
#endif
|
||
return false;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 广告展示 Show 接口
|
||
/// <summary>
|
||
/// 展示插屏
|
||
/// </summary>
|
||
/// <param name="_callback"> 插屏播放回调 </param>
|
||
public void ShowIntersitial(Action<ToukaIntersitialStatus> _callback)
|
||
{
|
||
m_intersitialShowCallback = _callback;
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.Showinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.Showinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 展示激励视频
|
||
/// </summary>
|
||
/// <param name="_callback"> 激励视频播放回调 </param>
|
||
public void ShowVideo(Action<ToukaVideoStatus> _callback)
|
||
{
|
||
m_videoShowCallback = _callback;
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.ShowVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.ShowVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 展示banner
|
||
/// </summary>
|
||
public void ShowBanner()
|
||
{
|
||
if (m_bannerHasShowed == false)
|
||
{
|
||
#if UNITY_IOS
|
||
#if NORMAL_BANNER
|
||
TGiOSAdManager.Instance.SetBannerAlign(ToukaBannerAlign.BannerCenterBottomAlign.ToString());
|
||
TGiOSAdManager.Instance.ShowBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
m_bannerHasShowed = true;
|
||
#elif NATIVE_BANNER
|
||
TGiOSAdManager.Instance.SetNativeBannerAlign(((int)ToukaBannerAlign.BannerCenterBottomAlign).ToString());
|
||
TGiOSAdManager.Instance.ShowNativeBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
m_bannerHasShowed = true;
|
||
#endif
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.ShowBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
#endif
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 展示native
|
||
/// </summary>
|
||
/// <param name="x"> native x坐标 </param>
|
||
/// <param name="y"> native y坐标 </param>
|
||
/// <param name="width"> native width </param>
|
||
/// <param name="height"> native height </param>
|
||
public void ShowNative(float x, float y, float width, float height,string adpos)
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID,adpos);
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID);
|
||
#endif
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 广告加载 Load 接口
|
||
|
||
/// <summary>
|
||
/// 加载插屏
|
||
/// </summary>
|
||
/// <param name="_callback"></param>
|
||
public void LoadInterstitial(System.Action<bool> _callback)
|
||
{
|
||
m_intersitialLoadCallback = _callback;
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.Loadinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.Loadinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载激励视频
|
||
/// </summary>
|
||
/// <param name="_callback"></param>
|
||
public void LoadVideo(System.Action<bool> _callback)
|
||
{
|
||
m_videoLoadCallback = _callback;
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.LoadVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.LoadVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载banner
|
||
/// </summary>
|
||
/// <param name="_callback"></param>
|
||
public void LoadBanner(System.Action<bool> _callback)
|
||
{
|
||
m_bannerLoadCallback = _callback;
|
||
#if UNITY_IOS
|
||
#if NORMAL_BANNER
|
||
TGiOSAdManager.Instance.LoadBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
#elif NATIVE_BANNER
|
||
TGiOSAdManager.Instance.LoadNativeBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
#endif
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.LoadBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载native
|
||
/// </summary>
|
||
/// <param name="_callback"></param>
|
||
public void LoadNative(System.Action<bool> _callback)
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter] LoadNative -------");
|
||
m_nativeLoadCallback = _callback;
|
||
#if UNITY_IOS && !NO_SDK
|
||
// if (!ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeWidth, 0) && !ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeHeight, 0))
|
||
// {
|
||
Debug.Log("native width, native height != 0, nativeWidth : " + ToukaAdManager.Instance.NativeWidth + " , nativeHeight : " + ToukaAdManager.Instance.NativeHeight);
|
||
TGiOSAdManager.Instance.LoadNative(StaticStringsKey.TOUKA_SDK_NATIVEID, ToukaAdManager.Instance.NativeWidth, ToukaAdManager.Instance.NativeHeight); // 不需要了,传0就可以
|
||
// }
|
||
|
||
#elif UNITY_ANDROID
|
||
|
||
#endif
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 广告移除 Remove /隐藏 Hide 接口
|
||
|
||
/// <summary>
|
||
/// 移除banner
|
||
/// </summary>
|
||
/// <param name="_clean"> true:清除 flse:隐藏</param>
|
||
public void RemoveBanner(bool _clean)
|
||
{
|
||
Debug.Log("in ToukaSDKAdapter, RemoveBanner , _clean : " + _clean);
|
||
#if UNITY_IOS
|
||
if (_clean)
|
||
{
|
||
Debug.Log("in ToukaSDKAdapter, RemoveBanner ,removeBanner. 01");
|
||
#if NORMAL_BANNER
|
||
TGiOSAdManager.Instance.RemoveBanner ();
|
||
#elif NATIVE_BANNER
|
||
TGiOSAdManager.Instance.RemoveNativeBanner();
|
||
#endif
|
||
}
|
||
else
|
||
{
|
||
Debug.Log("in ToukaSDKAdapter, RemoveBanner ,removeBanner. 02");
|
||
#if NORMAL_BANNER
|
||
TGiOSAdManager.Instance.HideBanner ();
|
||
#elif NATIVE_BANNER
|
||
TGiOSAdManager.Instance.HideNativeBanner();
|
||
#endif
|
||
}
|
||
|
||
m_bannerHasShowed = false;
|
||
#elif UNITY_ANDROID
|
||
TGAndroidAdManager.Instance.HideBanner();
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 移除native
|
||
/// </summary>
|
||
/// <param name="_isClean"> true:清除 false:隐藏 </param>
|
||
public void RemoveNative(bool _isClean)
|
||
{
|
||
#if UNITY_IOS && !NO_SDK
|
||
TGiOSAdManager.Instance.RemoveNative();
|
||
#elif UNITY_ANDROID
|
||
|
||
#endif
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 广告回调
|
||
|
||
#region TKInitListener
|
||
|
||
public void initSuccess()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter]: sdk init succ");
|
||
}
|
||
|
||
public void initFail()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter]: sdk init Fail.");
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region InterstitialAdListener
|
||
|
||
public void onInterstitialAdClick() { }
|
||
|
||
public void onInterstitialAdClose()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter]: Interstitial ad close.");
|
||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.CLOSE);
|
||
}
|
||
|
||
public void onInterstitialAdEndPlayingVideo() { }
|
||
|
||
public void onInterstitialAdFailedToPlayVideo() { }
|
||
|
||
public void onInterstitialAdLoad()
|
||
{
|
||
m_intersitialLoadCallback(true);
|
||
}
|
||
|
||
public void onInterstitialAdLoadFail()
|
||
{
|
||
m_intersitialLoadCallback(false);
|
||
}
|
||
|
||
public void onInterstitialAdShow()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter]: Interstitial ad show.");
|
||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.SHOW);
|
||
}
|
||
|
||
public void onInterstitialAdStartPlayingVideo() { }
|
||
|
||
public void onInterstitialAdFailedToShow()
|
||
{
|
||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.FAIL);
|
||
}
|
||
#endregion
|
||
|
||
#region RewardedVideoListener
|
||
|
||
public void onRewardedVideoAdLoaded()
|
||
{
|
||
if (m_videoLoadCallback != null)
|
||
{
|
||
m_videoLoadCallback(true);
|
||
}
|
||
}
|
||
|
||
public void onRewardedVideoAdLoadFail()
|
||
{
|
||
if (m_videoLoadCallback != null)
|
||
{
|
||
m_videoLoadCallback(false);
|
||
}
|
||
}
|
||
|
||
public void onRewardedVideoAdPlayStart()
|
||
{
|
||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.SHOW);
|
||
}
|
||
|
||
public void onRewardedVideoAdPlayEnd() { }
|
||
|
||
public void onRewardedVideoAdPlayFail()
|
||
{
|
||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.FAIL);
|
||
}
|
||
|
||
public void onRewardedVideoAdPlayClosed(string _isReward)
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter]: reward ad close, isReward : " + _isReward);
|
||
bool isReward = _isReward == "True";
|
||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.CLOSE);
|
||
if (m_videoShowCallback != null) m_videoShowCallback(isReward ? ToukaVideoStatus.SUCCESS : ToukaVideoStatus.CANCEL);
|
||
}
|
||
|
||
public void onRewardedVideoAdPlayClicked() { }
|
||
|
||
#endregion
|
||
|
||
#region BannerAdListener
|
||
public void onAdAutoRefresh() { }
|
||
|
||
public void onAdAutoRefreshFail() { }
|
||
|
||
public void onAdClick() { }
|
||
|
||
public void onAdClose() { }
|
||
|
||
public void onAdImpress() { }
|
||
|
||
public void onBannerAdLoad()
|
||
{
|
||
m_bannerLoadCallback(true);
|
||
m_bannerLoaded = true;
|
||
}
|
||
|
||
public void onBannerAdLoadFail()
|
||
{
|
||
m_bannerLoadCallback(false);
|
||
}
|
||
#endregion
|
||
|
||
#region NativeBannerAdListener
|
||
public void onNativeBannerAdLoaded()
|
||
{
|
||
m_bannerLoadCallback(true);
|
||
m_bannerLoaded = true;
|
||
}
|
||
|
||
public void onNativeBannerAdLoadFail()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter] onNativeBannerAdLoadFail.");
|
||
m_bannerLoadCallback(false);
|
||
}
|
||
|
||
public void onNativeBannerAdImpressed() { }
|
||
|
||
public void onNativeBannerAdClicked() { }
|
||
|
||
public void onNativeBannerAdAutoRefresh() { }
|
||
|
||
public void onNativeBannerAdAutoRefreshFailure() { }
|
||
|
||
public void onNativeBannerAdCloseButtonClicked() { }
|
||
|
||
public void onNativeAdLoaded()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter] onNativeAdLoaded ----");
|
||
if (m_nativeLoadCallback != null)
|
||
{
|
||
m_nativeLoadCallback(true);
|
||
}
|
||
}
|
||
|
||
public void onNativeAdLoadFail()
|
||
{
|
||
Debug.Log("[ToukaSDKAdapter] onNativeAdLoadFail ----");
|
||
if (m_nativeLoadCallback != null)
|
||
{
|
||
m_nativeLoadCallback(false);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
}
|
||
} |