#if UNITY_WEBGL || H5_DY
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if H5_WX
using WeChatWASM;
#elif H5_DY
using StarkSDKSpace;
#endif
namespace Touka
{
///
/// TKG Native SDK Android platform interface call
///
public class TKGNativeInterfaceWebgl : TKGNativeInterface
{
private AndroidJavaObject jo;
#if H5_WX
private WXBannerAd bannerAd;
private WXInterstitialAd interstitialAd;
private WXRewardedVideoAd rewardAd;
private WeChatWASM.SystemInfo sysInfo;
#elif H5_DY
public string DY_RV_ID = "oa31oo12lhr20333ed";
public string DY_IV_ID = "dd5iaf297h193cbbfn";
public string DY_Banner_ID = "";
private int px2dp(int px) => (int)(px * (160 / Screen.dpi));
StarkAdManager.BannerStyle m_style = new StarkAdManager.BannerStyle();
StarkAdManager.BannerAd m_bannerAdIns = null;
StarkAdManager.InterstitialAd m_interstitalAd = null;
#endif
public TKGNativeInterfaceWebgl()
{
}
#region init
///
/// init
///
///
public override void Init(Action _initCallback = null)
{
TKGDebugger.LogDebug("init ----- 00");
//SetBannerAdCallback(new AndroidBannerADTKGAdCallback());
//TKGDebugger.LogDebug("init ----- 01 ------- a");
//setInterstitalAdCallback(new AndroidInterADTKGAdCallback());
//TKGDebugger.LogDebug("init ----- 01 ------- b");
//SetRewardAdCallback(new AndroidRewardADTKGAdCallback());
//TKGDebugger.LogDebug("init ----- 01 ------- c");
//SetSDKCommonCallback(new AndroidTKGCommonCalllback());
TKGDebugger.LogDebug("init ----- 01 ------- d");
#if H5_WX
WXBase.InitSDK((_code) => {
_initCallback();
initAds();
});
#endif
#if H5_DY
StarkSDK.API.GetStarkAdManager();
StarkAdManager.IsShowLoadAdToast = false;
_initCallback();
initAds();
#endif
TKGDebugger.LogDebug("init ----- 02");
}
#endregion
///
/// Get Channel
///
///
public override string GetChannel()
{
return "WEBGL";
}
#region Ads
public override void PurchasedRemoveAds()
{
}
public override void SetUnitySDKVersion(string sdkVersion)
{
}
#region Ads Show
private void initAds()
{
Debug.Log("tkg native webgl initAds -----");
//initBanner();
initInterstitialAd();
initRewardAd();
}
private void initBanner()
{
#if H5_WX
return;
Debug.Log("tkg native webgl initBanner -----");
sysInfo = WX.GetSystemInfoSync();
bannerAd = WX.CreateBannerAd(new WXCreateBannerAdParam()
{
adUnitId = "adunit-be92d71eb86ec60a",
adIntervals = 30,
style = new Style()
{
left = 0,
top = (int)sysInfo.windowHeight - 100,
width = (int)sysInfo.windowWidth,
height = 100
}
});
bannerAd.OnError((WXADErrorResponse res) =>
{
Debug.Log("bannerad error response, errCode : " + res.errCode + " , errMsg : " + res.errMsg);
});
bannerAd.OnLoad((WXADLoadResponse res) =>
{
Debug.Log("bannerad loaded response, rewardValue : " + res.rewardValue + " , shareValue : " + res.shareValue + " , errMsg : " + res.errMsg);
});
bannerAd.OnResize((WXADResizeResponse res) =>
{
Debug.Log("bannerAd on resize, errMsg: " + res.errMsg + " , width : " + res.width + " , height : " + res.height);
//拉取的广告可能跟设置的不一样,需要动态调整位置
bannerAd.style.top = (int)sysInfo.windowHeight - res.height;
});
#elif H5_DY
m_style.width = 320;
m_style.left = 10;
m_style.top = 100;
m_bannerAdIns = StarkSDK.API.GetStarkAdManager().CreateBannerAd(DY_Banner_ID, m_style, 30,
OnAdError, OnBannerLoaded, OnBannerResize);
#endif
}
///
/// banner callback error
///
///
///
private void OnAdError(int errorCode, string errorMsg)
{
Debug.Log("OnAdError, errorCode : " + errorCode + " , errorMsg : " + errorMsg);
}
///
/// on banner loaded
///
private void OnBannerLoaded()
{
Debug.Log("OnBannerLoaded");
if (m_bannerAdIns != null)
m_bannerAdIns.Show();
ChangeBannerStyle();
}
///
/// on banner resize
///
///
///
private void OnBannerResize(int width, int height)
{
Debug.Log("OnBannerResize, width : " + width + " , height : " + height);
}
private void ChangeBannerStyle()
{
int w = m_style.width; //获取banner宽度大小
int h = m_style.height; //获取banner高度大小
int sw = px2dp(Screen.width); //获得屏幕宽度(dp)
int sh = px2dp(Screen.height); //获得屏幕高度(dp)
m_style.top = sh - h; //底部
m_style.left = sw / 2 - w / 2; //中央
m_style.width = w;
if(m_bannerAdIns != null)
{
m_bannerAdIns.ReSize(m_style); //使用Resize函数调整位置和大小
}
}
///
/// Show banner Ad
///
/// todo banner pos
///
/// bannerAlign
public override void showBannerAd(TKGBannerAlign _pos)
{
Debug.Log("tkg native webgl showBannerAd -----");
//int _posIndex = 2;
//if(_pos == TKGBannerAlign.BannerCenterTopAlign)
//{
// _posIndex = 1;
//}
//else if(_pos == TKGBannerAlign.BannerCenterBottomAlign)
//{
// _posIndex = 2;
//}
#if H5_WX
return;
if(bannerAd != null)
{
Debug.Log("tkg native webgl showBannerAd ----- 01");
bannerAd.Show((_succ)=> {
Debug.Log("banner ad show succ, errCode: " + _succ.errCode + " , errMsg : " + _succ.errMsg);
}, (_fail)=> {
Debug.Log("banner ad show fail, errCode: " + _fail.errCode + " , errMsg : " + _fail.errMsg);
});
}
else
{
Debug.Log("tkg native webgl showBannerAd ----- 02");
}
#endif
}
///
/// Hide Banner Ad
///
public override void hideBannerAd()
{
#if H5_WX
if (bannerAd != null)
{
bannerAd.Hide();
}
#endif
}
private void initInterstitialAd()
{
#if H5_WX
Debug.Log("tkg native webgl initInterstitialAd -----");
interstitialAd = WX.CreateInterstitialAd(new WXCreateInterstitialAdParam()
{
adUnitId = ""
});
#elif H5_DY
CreateAndLoadIV();
#endif
}
private void CreateAndLoadIV()
{
m_interstitalAd = StarkSDK.API.GetStarkAdManager().CreateInterstitialAd(DY_IV_ID, OnIVError, OnIVClose, OnIVLoaded);
}
private void OnIVError(int errorCode, string errorMsg)
{
Debug.Log("OnIVError, errorCode : " + errorCode + " , errorMsg : " + errorMsg);
}
private void OnIVClose()
{
if(m_interstitalAd != null)
{
m_interstitalAd.Destory();
}
m_interstitalAd = null;
}
private void OnIVLoaded()
{
if(m_interstitalAd != null)
{
Debug.Log("m_interstitalAd OnIVLoaded");
}
}
///
/// Show Interstitial Ad
///
public override void showInterstitialAd()
{
}
///
/// Show Interstitial Ad
///
///
public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1)
{
Debug.Log("tkg native webgl showInterstitialAd -----");
#if H5_WX
if(interstitialAd != null)
{
Debug.Log("tkg native webgl showInterstitialAd ----- 01");
interstitialAd.Show();
}
else
{
Debug.Log("tkg native webgl showInterstitialAd ----- 02");
}
#elif H5_DY
if(m_interstitalAd != null)
{
Debug.Log("in show iv, m_interstitalAd is not null");
if (m_interstitalAd.IsLoaded())
{
Debug.Log("in show iv, m_interstitalAd is loaded");
m_interstitalAd.Show();
}
else
{
Debug.Log("in show iv, m_interstitalAd is not loaded");
m_interstitalAd.Load();
m_interstitalAd.Show();
}
}
else
{
Debug.Log("in show iv, m_interstitalAd is null");
CreateAndLoadIV();
}
#endif
}
private void initRewardAd()
{
Debug.Log("tkg native webgl initRewardAd -----");
#if H5_WX
rewardAd = WX.CreateRewardedVideoAd(new WXCreateRewardedVideoAdParam() {
adUnitId = ""
});
#endif
}
///
/// Show Reward Ad
///
///
///
public override void showRewardAd(string _adPos, int _itemCount = -1)
{
Debug.Log("tkg native webgl showRewardAd -----");
#if H5_WX
if (rewardAd != null)
{
Debug.Log("tkg native webgl showRewardAd ----- 01");
rewardAd.Show();
}
else
{
Debug.Log("tkg native webgl showRewardAd ----- 02");
}
#elif H5_DY
//抖音
StarkSDKSpace.StarkSDK.API.GetStarkAdManager().ShowVideoAdWithId(DY_RV_ID, (isdone) =>
{
if (isdone)
{
//播放成功
//RecordEvents("AdComplete", "WhereCompleteAd", title);
Debug.Log("关闭回调,播放成功");
if (TKGSDKCallback.mRewardCallback != null)
{
TKGSDKCallback.mRewardCallback.Invoke(true);
TKGSDKCallback.mRewardCallback = null;
}
}
else
{
Debug.Log("关闭回调,播放失败");
if (TKGSDKCallback.mRewardCallback != null)
{
TKGSDKCallback.mRewardCallback.Invoke(false);
TKGSDKCallback.mRewardCallback = null;
}
}
}, (errcode, errmessage) =>
{
Debug.Log("失败回调, errorcode : " + errcode + " , errmessage : " + errmessage);
if (TKGSDKCallback.mRewardShowFailedCallback != null)
{
TKGSDKCallback.mRewardShowFailedCallback.Invoke();
TKGSDKCallback.mRewardShowFailedCallback = null;
}
}, null);
#endif
}
///
/// Show Reward Ad
///
///
///
///
public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent)
{
}
///
/// Show Video Ad
///
///
///
public override void showVideoAd(string _adPos, int _itemCount = -1)
{
}
public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "")
{
}
public override void RemoveNativeAd()
{
}
#endregion
#region Ads isready
///
/// banner isReady
///
///
public override bool isBannerAdReady()
{
return false;
}
///
/// Interstitial isReady
///
///
public override bool isInterstitialAdReady()
{
return false;
}
///
/// Reward isReady
///
///
public override bool isRewardAdReady()
{
return false;
}
///
/// FullScreen isReady
///
///
public override bool isVideoAdReady()
{
return false;
}
public override bool IsReadyNativeAd()
{
return false;
}
#endregion
#region Set ads callback
///
/// Set Banner Ad Callback
///
///
public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback)
{
}
///
/// Set Interstital Ad Callback
///
///
public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback)
{
}
///
/// Set reward Ad Callback
///
///
public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback)
{
}
///
/// Set video Ad Callback(full screen ad, reward ad with no reward callback)
///
///
public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback)
{
}
#endregion
#region load ads
///
/// load interstitial ad
/// (retry 3 times, per time interval 10s)
///
public override void loadInterstitialAD()
{
}
///
/// load reward ad
/// (retry 3 times, per time interval 10s)
///
public override void loadRewardAD()
{
}
///
/// load video ad
/// (retry 3 times, per time interval 10s)
///
public override void loadVideoAD()
{
}
#endregion
#endregion
#region Log Event
#region Normal
///
/// onEvent
///
///
///
public override void onEvent(string _eventName)
{
}
///
/// onEvent
///
///
///
///
///
public override void onEvent(string _eventName, string _key01, string _value01)
{
}
///
/// onEvent
///
///
///
///
///
///
///
public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02)
{
}
///
/// onEvent
///
///
///
public override void onEvent(string _eventName, Dictionary _keyValues)
{
}
#endregion
#region Level Event
///
/// Level Start
///
///
public override void LevelStart(string _levelId)
{
}
///
/// Level end
///
///
///
public override void LevelEnd(string _levelId, StageResult _stageResult)
{
}
#endregion
#region Tracking Event
///
/// Log Tracking Event
///
///
public override void LogTrackingEvent(TrackingEventType _eventType)
{
}
#endregion
#endregion
#region Online Config
///
/// get config - int
///
///
///
public override int GetConfigInt(string _key, int _default)
{
TKGDebugger.LogDebug("int _key : " + _key + " , _default : " + _default);
//int newValue = SDKCall("getConfigInt", _key, _default);
return _default;
}
///
/// get config - string
///
///
///
public override string GetConfigString(string _key, string _default)
{
TKGDebugger.LogDebug("string _key : " + _key + " , _default : " + _default);
//string newValue = SDKCall("getConfigString", _key, _default);
return _default;
}
///
/// get config - bool
///
///
///
public override bool GetConfigBool(string _key, bool _default)
{
TKGDebugger.LogDebug("bool _key : " + _key + " , _default : " + _default);
//bool newValue = SDKCall("getConfigBool", _key, _default);
return _default;
}
#endregion
#region Others (Common)
///
/// review
///
public override void Review()
{
//SDKCall("review");
}
///
/// open Privacy
///
public override void OpenPrivacyURL()
{
//SDKCall("openPrivacy");
}
///
/// open agreement
///
public override void OpenUserTermURL()
{
//SDKCall("openAgreement");
}
///
/// open policy pop
///
public override void OpenPolicyPop()
{
//SDKCall("openPrivacyDialog");
}
///
/// More Games
///
public override void OpenMoreGame()
{
//SDKCall("moreGames");
}
///
/// Set Log Enable
///
///
public override void SetLogEnable(bool _enable)
{
//SDKCall("setEnableLog", _enable);
}
#endregion
#region Others (Uncommon)
///
/// shake(no repeat)
///
/// shake time
public override void shake(int _shakeType, float _intensity = 1)
{
//long tShakeMS = _shakeType * _shakeType * 20 + (int)(_intensity * (_shakeType + 1) * 10);
//SDKCall("shake", tShakeMS);
}
///
/// shake(can repeat)
///
/// repeat times : -1
/// wait time,shake time(100,1000,100,111)
//public override void shake(int _repeatTimes, params int[] _shakeTime)
//{
// SDKCall("shake", _repeatTimes, _shakeTime);
//}
///
/// cancel shake
///
public override void cancelShake()
{
//SDKCall("cancelShake");
}
///
/// Show Tips
/// Pop-up prompt (the one with black transparent background) unified style, Chinese, Japanese, Korean and English, support multi-language, multi-language text
///
/// game judges different languages by itself and passes different strings
///
/// title
/// content
public override void dialogTips(string _titleStr, string _contentStr = "")
{
//SDKCall("dialogTips", _titleStr);
}
///
/// Open ULR by Browser
///
///
public override void openUrlBrowser(string _url)
{
//SDKCall("openUrlBrowser", _url);
}
///
/// Open ULR By WEB POP
///
///
public override void openWebUrl(string _url)
{
//SDKCall("openWebUrl", _url);
}
///
/// show Toast
///
///
public override void toast(string _content)
{
//SDKCall("toast");
}
///
/// push message
///
public override void pushMsg()
{
//SDKCall("pushMsg");
}
//
/// share txt
///
///
public override void ShareTxt(string _shareTxt)
{
//SDKCall("localShareTxt", _shareTxt);
}
public override void RegistAPNS()
{
}
public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle)
{
}
public override void RemoveNotification(string notiId)
{
}
public override void RemoveAllNotifications()
{
}
#endregion
#region common callback
public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback)
{
//SDKCall("setTkgCallback", _commonCallback);
}
public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback)
{
//SDKCall("getUserSource", _userSourceCallback);
}
#endregion
}
}
#endif