#if UNITY_ANDROID using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Touka { /// /// TKG Native SDK Android platform interface call /// public class TKGNativeInterfaceAndroid : TKGNativeInterface { private AndroidJavaObject jo; public TKGNativeInterfaceAndroid() { // java interface class using (AndroidJavaClass jc = new AndroidJavaClass("com.touka.tkg.TKGProxyJava")) { jo = jc.CallStatic("getInstance"); } } private T SDKCall(string _method, params object[] _param) { try { return jo.Call(_method, _param); } catch (Exception e) { Debug.LogError(e); } return default(T); } private void SDKCall(string _method, params object[] _param) { try { jo.Call(_method, _param); } catch (Exception e) { Debug.LogError(e); } } #region init /// /// init /// /// public override void Init(Action _initCallback = null) { TKGDebugger.LogDebug("init ----- 00"); base.Init(_initCallback); TKGDebugger.LogDebug("init ----- 01"); 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"); SDKCall("init", new AndroidProxyCallback()); TKGDebugger.LogDebug("init ----- 02"); } #endregion /// /// Get Channel /// /// public override string GetChannel() { #if UNITY_ANDROID return SDKCall("getChannel"); #endif return "AndroidRoot"; } #region Ads public override void PurchasedRemoveAds() { #if UNITY_ANDROID SDKCall("purchasedRemoveAds"); #endif } public override void SetUnitySDKVersion(string sdkVersion) { #if UNITY_ANDROID SDKCall("setUnitySDKVersion","UnitySDK",sdkVersion); #endif } #region Ads Show /// /// Show banner Ad /// /// bannerAlign public override void showBannerAd(TKGBannerAlign _pos) { int _posIndex = 2; if(_pos == TKGBannerAlign.BannerCenterTopAlign) { _posIndex = 1; } else if(_pos == TKGBannerAlign.BannerCenterBottomAlign) { _posIndex = 2; } #if UNITY_ANDROID SDKCall("showBannerAd", _posIndex); #endif } /// /// Hide Banner Ad /// public override void hideBannerAd() { #if UNITY_ANDROID SDKCall("hideBannerAd"); #endif } public override void RemoveNativeAd() { #if UNITY_ANDROID SDKCall("hideNative"); #endif } /// /// Show Interstitial Ad /// public override void showInterstitialAd() { #if UNITY_ANDROID SDKCall("showInterstitialAd"); #endif } /// /// Show Interstitial Ad /// /// public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) { #if UNITY_ANDROID SDKCall("showInterstitialAd", _adPos, (int)_IvType); #endif } /// /// Show Reward Ad /// /// /// public override void showRewardAd(string _adPos, int _itemCount = -1) { #if UNITY_ANDROID SDKCall("showRewardAd", _adPos, _itemCount); #endif } /// /// Show Reward Ad /// /// /// /// public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) { #if UNITY_ANDROID SDKCall("showRewardAd", _adPos, _itemCount, _extraEvent); #endif } /// /// Show Video Ad /// /// /// public override void showVideoAd(string _adPos, int _itemCount = -1) { #if UNITY_ANDROID SDKCall("showVideoAd", _adPos, _itemCount); #endif } public override void SetShowSDKToast(bool _useSDKToast) { #if UNITY_ANDROID SDKCall("setShowSDKRewardTips", _useSDKToast); #endif } public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") { #if UNITY_ANDROID Vector3[] tWorldCorners = new Vector3[4]; pRect.GetWorldCorners(tWorldCorners); Vector2 tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]); Vector2 tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]); float tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x); float tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); // x , y , width , height // ((tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight) SDKCall("showNative", pAdPos, tTopLeft.x, Screen.height - tTopLeft.y, tWidth, tHeight); #endif } #endregion #region Ads isready /// /// banner isReady /// /// public override bool isBannerAdReady() { #if UNITY_ANDROID bool isReady = SDKCall("isBannerAdReady"); return isReady; #else return false; #endif } /// /// Interstitial isReady /// /// public override bool isInterstitialAdReady() { #if UNITY_ANDROID bool isReady = SDKCall("isInterstitialAdReady"); return isReady; #else return false; #endif } /// /// Reward isReady /// /// public override bool isRewardAdReady() { #if UNITY_ANDROID bool isReady = SDKCall("isRewardAdReady"); return isReady; #else return false; #endif } /// /// FullScreen isReady /// /// public override bool isVideoAdReady() { #if UNITY_ANDROID bool isReady = SDKCall("isVideoAdReady"); return isReady; #else return false; #endif } public override bool IsReadyNativeAd() { #if UNITY_ANDROID bool isReady = SDKCall("isNativeReady"); return isReady; #else return false; #endif } #endregion #region Set ads callback /// /// Set Banner Ad Callback /// /// public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) { #if UNITY_ANDROID SDKCall("setBannerAdCallback", _bannerCallback); #endif } /// /// Set Interstital Ad Callback /// /// public override void setInterstitalAdCallback(AndroidInterADTKGAdCallback _interCallback) { #if UNITY_ANDROID SDKCall("setInterstitalAdCallback", _interCallback); #endif } /// /// Set reward Ad Callback /// /// public override void SetRewardAdCallback(AndroidRewardADTKGAdCallback _rewardCallback) { #if UNITY_ANDROID SDKCall("setRewardAdCallback", _rewardCallback); #endif } /// /// Set video Ad Callback(full screen ad, reward ad with no reward callback) /// /// public override void setVideoAdCallback(AndroidInterADTKGAdCallback _videoCallback) { #if UNITY_ANDROID SDKCall("setVideoAdCallback", _videoCallback); #endif } #endregion #region load ads /// /// load interstitial ad /// (retry 3 times, per time interval 10s) /// public override void loadInterstitialAD() { #if UNITY_ANDROID SDKCall("loadInterstitialAD"); #endif } /// /// load reward ad /// (retry 3 times, per time interval 10s) /// public override void loadRewardAD() { #if UNITY_ANDROID SDKCall("loadRewardAD"); #endif } /// /// load video ad /// (retry 3 times, per time interval 10s) /// public override void loadVideoAD() { #if UNITY_ANDROID SDKCall("loadVideoAD"); #endif } #endregion #endregion #region Log Event #region Normal /// /// onEvent /// /// /// public override void onEvent(string _eventName) { #if UNITY_ANDROID SDKCall("onEvent", _eventName); #endif } /// /// onEvent /// /// /// /// /// public override void onEvent(string _eventName, string _key01, string _value01) { #if UNITY_ANDROID SDKCall("onEvent", _eventName, _key01, _value01); #endif } /// /// onEvent /// /// /// /// /// /// /// public override void onEvent(string _eventName, string _key01, string _value01, string _key02, string _value02) { #if UNITY_ANDROID SDKCall("onEvent", _eventName, _key01, _value01, _key02, _value02); #endif } /// /// onEvent /// /// /// public override void onEvent(string _eventName, Dictionary _keyValues) { #if UNITY_ANDROID SDKCall("onEvent", _eventName, Analytics.ToJavaHashMap(_keyValues)); #endif } #endregion #region Level Event /// /// Level Start /// /// public override void LevelStart(string _levelId) { #if UNITY_ANDROID SDKCall("levelStart", _levelId); #endif } /// /// Level end /// /// /// public override void LevelEnd(string _levelId, StageResult _stageResult) { #if UNITY_ANDROID SDKCall("levelEnd", _levelId, (int)_stageResult); #endif } #endregion #region Tracking Event /// /// Log Tracking Event /// /// public override void LogTrackingEvent(TrackingEventType _eventType) { #if UNITY_ANDROID SDKCall("LogTrackingEvent", (int)_eventType); #endif } #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 newValue; } /// /// 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 newValue; } /// /// 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 newValue; } #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("dialogTips",_content); } /// /// push message /// public override void pushMsg() { SDKCall("pushMsg"); } // /// share txt /// /// public override void ShareTxt(string _shareTxt) { SDKCall("localShareTxt", _shareTxt); } public override void RegistAPNS() { } /// /// show picture cross /// public override bool showPictureCross() { return SDKCall("showPictureCross"); } /// /// remove picture cross /// public override void removePictureCross() { SDKCall("removePictureCross"); } /// /// show more game icon /// public override bool showMoreGameIcon() { return SDKCall("showMoreGameIcon"); } /// /// remove more game icon /// public override void removeMoreGameIcon() { SDKCall("removeMoreGameIcon"); } public override void RegistNotification(string notiId, string body, string fireDate, int badge, string title, string subTitle) { SDKCall("registNotification",notiId,body,fireDate,badge,title,subTitle); } public override void RemoveNotification(string notiId) { SDKCall("removeNotification", notiId); } public override void RemoveAllNotifications() { SDKCall("removeAllNotifications"); } #endregion #region common callback public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) { SDKCall("setTkgCallback", _commonCallback); } public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) { SDKCall("getUserSource", _userSourceCallback); } public override void SetUserSourceCallback(AndroidTKGUserSourceCalllbackWithCampaignName _userSourceCallback) { SDKCall("getUserSource", _userSourceCallback); } public override void SetFunctionSwitchCalllback(List _functionKeys, AndroidFunctionSwitchCalllback _functionSwitchCalllback) { string keys=""; for (int i = 0; i < _functionKeys.Count; i++) { FunctionType enumType = _functionKeys[i]; string enumTypeString = enumType.ToString(); if(keys!=""){ keys=keys+"@"; } keys=keys+enumTypeString; } SDKCall("setGameSwitchListener", keys,_functionSwitchCalllback); } #endregion } } #endif