using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using AOT;
using UnityEngine;
///
/// 广告SDK内部处理
///
public class ToukaSDKAdapter : IToukaAdInterface
{
///
/// banner 位置
///
public enum ToukaBannerAlign:int
{
BannerCenterBottomAlign = 34,
BannerCenterTopAlign = 10,
}
// banner是否已展示
private bool m_bannerHasShowed = false;
// banner是否已加载
private bool m_bannerLoaded = false;
private System.Action m_bannerLoadCallback; // banner加载回调
private System.Action m_intersitialLoadCallback; // 插屏加载回调
private System.Action m_videoLoadCallback; // 激励视频加载回调
private System.Action m_nativeLoadCallback; // native加载回调
private System.Action m_videoShowCallback; // 激励视频展示回调
private System.Action m_intersitialShowCallback; // 插屏展示回调
private static ToukaSDKAdapter s_instance;
public static ToukaSDKAdapter Instance
{
get
{
if (s_instance == null)
{
s_instance = new ToukaSDKAdapter();
}
return s_instance;
}
}
///
/// init
///
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
}
///
/// sdk 回调
///
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 接口
///
/// 插屏 IsReady
///
///
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;
}
///
/// 激励视频 IsReady
///
///
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;
}
///
/// banner IsReady
///
///
public bool IsReadyBanner()
{
return m_bannerLoaded;
}
///
/// native IsReady
///
///
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 接口
///
/// 展示插屏
///
/// 插屏播放回调
public void ShowIntersitial(Action _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
}
///
/// 展示激励视频
///
/// 激励视频播放回调
public void ShowVideo(Action _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
}
///
/// 展示banner
///
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
}
}
///
/// 展示native
///
/// native x坐标
/// native y坐标
/// native width
/// native height
public void ShowNative(float x, float y, float width, float height)
{
#if UNITY_IOS && !NO_SDK
TGiOSAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID);
#elif UNITY_ANDROID
TGAndroidAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID);
#endif
}
#endregion
#region 广告加载 Load 接口
///
/// 加载插屏
///
///
public void LoadInterstitial(System.Action _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
}
///
/// 加载激励视频
///
///
public void LoadVideo(System.Action _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
}
///
/// 加载banner
///
///
public void LoadBanner(System.Action _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
}
///
/// 加载native
///
///
public void LoadNative(System.Action _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 接口
///
/// 移除banner
///
/// true:清除 flse:隐藏
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
}
///
/// 移除native
///
/// true:清除 false:隐藏
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
}