#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(); _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