using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace Touka { /// /// TKG Native SDK Default platform interface call /// public class TKGNativeInterfaceDefault : TKGNativeInterface { public override void Init(Action _initCallback = null) { _initCallback?.Invoke(); } public override void SetUnitySDKVersion(string sdkVersion) { } /// /// Get Channel /// /// public override string GetChannel() { return ""; } /// /// Set Log Enable /// /// public override void SetLogEnable(bool _enable) { } #region Ads public override void PurchasedRemoveAds() { } #region Ads Show /// /// Show banner Ad /// /// bannerAlign public override void showBannerAd(TKGBannerAlign _pos) { } /// /// Hide Banner Ad /// public override void hideBannerAd() { } /// /// Show Interstitial Ad /// public override void showInterstitialAd() { } /// /// Show Interstitial Ad /// public override void showInterstitialAd(string _adPos, IVADType _IvType = IVADType.IV1) { } /// /// Show Reward Ad /// public override void showRewardAd(string _adPos, int _itemCount = -1) { } /// /// Show Reward Ad /// /// /// /// public override void showRewardAd(string _adPos, int _itemCount, Dictionary _extraEvent) { } /// /// Show FullScreen Ad(is RV without reward callback) /// public override void showVideoAd(string _adPos, int _itemCount = -1) { } #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; } #endregion #region Set callback /// /// Set Banner Ad Callback /// /// public override void SetBannerAdCallback(AndroidBannerADTKGAdCallback _bannerCallback) { } /// /// Set reward video click Callback /// /// public override void SetRewardClickListener(Action _rewardClickAction) { } /// /// Set game focus Callback /// /// public override void SetGameFocusListener(Action _gameFocusAction) { } /// /// 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 /// /// 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) { } #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) { return _default; } /// /// get config - string /// /// /// public override string GetConfigString(string _key, string _default) { return _default; } /// /// get config - bool /// /// /// public override bool GetConfigBool(string _key, bool _default) { return default; } #endregion #region Others (Common) /// /// review /// public override void Review() { } /// /// open Privacy /// public override void OpenPrivacyURL() { } /// /// open agreement /// public override void OpenUserTermURL() { } /// /// open policy pop /// public override void OpenPolicyPop() { } /// /// More Games /// public override void OpenMoreGame() { } #endregion #region Others (Uncommon) /// /// shake(no repeat) /// /// shake time public override void shake(int _shakeType, float _intensity = 1) { } /// /// show picture cross /// public override bool showPictureCross() { return false; } /// /// remove picture cross /// public override void removePictureCross() { } /// /// show more game icon /// public override bool showMoreGameIcon() { return false; } /// /// remove more game icon /// public override void removeMoreGameIcon() { } /// /// shake(can repeat) /// /// repeat times : -1 /// wait time,shake time(100,1000,100,111) //public override void shake(int _repeatTimes, params int[] _shakeTime) //{ //} /// /// cancel shake /// public override void 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) { } /// /// Open ULR by Browser /// /// public override void openUrlBrowser(string _url) { } /// /// Open ULR By WEB POP /// /// public override void openWebUrl(string _url) { } /// /// show Toast /// /// public override void toast(string _content) { } /// /// push message /// public override void pushMsg() { } #endregion #region common callback public override void SetSDKCommonCallback(AndroidTKGCommonCalllback _commonCallback) { } public override void SetUserSourceCallback(AndroidTKGUserSourceCalllback _userSourceCallback) { } public override void SetUserSourceCallback(AndroidTKGUserSourceCalllbackWithCampaignName _userSourceCallback) { } /// /// get a iap product list for sdk config file /// public override Dictionary GetIAPProductList() { return new Dictionary(); } public override void RemoveNativeAd() { } /// /// set segment type to sdk /// /// segment type public override void SetSegment(SegmentType type) { } public override bool IsDebugMode() { return false; } /// /// get user name and user id card /// public override string GetUserNameAndUserIDCard() { return "0_0"; } public override bool IsReadyNativeAd() { return false; } public override void ShowNativeAd(RectTransform pRect, Camera pCam = null, string pAdPos = "") { } public override void ShareTxt(string _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() { } public override void SetShowSDKToast(bool _useSDKToast) { } public override void SetFunctionSwitchCalllback(List _functionKeys, AndroidFunctionSwitchCalllback _functionSwitchCalllback) { } #endregion #region 数据中台 public override void LogPurchasePrice(string price,string currency) { } public override void LogRobuxCashOut() { } public override void LogNoviceGuideFinish() { } public override bool GuidGpComment() { return true; } #endregion #region 用户登录 public override void Login(LoginType loginType, Action loginResultCallback = null) { Server.Instance.Login(loginType, (status, msg, loginInfo) => { PlayerPrefs.SetInt("last_login_type", (int)loginType); var loginStatus = status == 0 ? LoginStatus.LOGIN_STATUS_SUCC : LoginStatus.LOGIN_STATUS_FAILED; var loginTypeEnum = (LoginType)Enum.ToObject(typeof(LoginType), loginInfo.user_type); PlayerPrefs.SetString("user_id", loginInfo.user_id); PlayerPrefs.SetString("token", loginInfo.token); PlayerPrefs.SetInt("user_type", loginInfo.user_type); loginResultCallback?.Invoke(loginStatus, loginTypeEnum, msg, loginInfo.user_id, loginInfo.token, "", "", ""); }); } public override void Logout(Action _logoutCallback = null) { PlayerPrefs.DeleteKey("last_login_type"); PlayerPrefs.DeleteKey("user_id"); PlayerPrefs.DeleteKey("user_type"); PlayerPrefs.DeleteKey("token"); _logoutCallback?.Invoke(); } public override List AvailableLoginChannelList() { var loginChannels = PlayerPrefs.GetString("loginChannels", "" + (int)LoginType.LOGIN_BY_GUESTER); return loginChannels.Split(',') .Select(channel => (LoginType)Enum.ToObject(typeof(LoginType), int.Parse(channel))).ToList(); } public override void DeleteAccount(Action deleteAccountCallback = null) { Server.Instance.DeleteAccount(PlayerPrefs.GetString("user_id"), (code, msg) => { // 退出账号 Logout(); deleteAccountCallback?.Invoke( code == 0 ? DeleteStatus.DELETE_ACCOUNT_SUCC : DeleteStatus.DELETE_ACCOUNT_FAILED, msg); }); } public override void BindAccount(LoginType type, BindType isForce, string userId, Action bindAccountCallback) { var thirdUserId = ""; switch (type) { case LoginType.LOGIN_BY_GOOGLE: thirdUserId = PlayerPrefs.GetString("google_user_id"); break; case LoginType.LOGIN_BY_FACEBOOK: thirdUserId = PlayerPrefs.GetString("facebook_user_id"); break; } if (isForce == BindType.NO_FORCE) { userId = PlayerPrefs.GetString("user_id"); } Server.Instance.Bind(type, isForce, thirdUserId, userId, (status, msg, data) => { if (status != 0) { bindAccountCallback.Invoke(BindAccountStatus.BIND_CODE_FAILED, type, msg, data.user_id, data.token, "", "", "", data.user_ids); return; } if (data.user_ids != null && data.user_ids.Length == 2) { // (status, loginTYpe, msg, userId, token, email, displayName, photoUrl, userIdList) bindAccountCallback.Invoke(BindAccountStatus.BIND_CODE_SELECT, type, msg, data.user_id, data.token, "", "", "", data.user_ids); } else { PlayerPrefs.SetString("user_id", data.user_id); PlayerPrefs.SetString("token", data.token); PlayerPrefs.SetInt("user_type", (int)type); bindAccountCallback.Invoke(BindAccountStatus.BIND_CODE_SUCC, type, msg, data.user_id, data.token, "", "", "", data.user_ids); } }); } public override void AutoLogin( Action loginResultCallback) { if (!IsCanAutoLogin()) { loginResultCallback?.Invoke(LoginStatus.LOGIN_STATUS_NO_CACHE, LoginType.LOGIN_BY_AUTO, "not cache login", "", "", "", "", ""); } else { var lastLoginType = PlayerPrefs.GetInt("last_login_type"); Login((LoginType)Enum.ToObject(typeof(LoginType), lastLoginType), loginResultCallback); } } public override LoginType GetAccountType() { var userType = PlayerPrefs.GetInt("user_type"); return (LoginType)Enum.ToObject(typeof(LoginType), userType); } public override bool IsCanAutoLogin() { return PlayerPrefs.HasKey("last_login_type"); } #endregion #region IAP Event /// /// Log IAP button show /// public override void LogIAPBtnShow(string _productName, string _productID) { } /// /// Log IAP button Click /// public override void LogIAPBtnClick(string _productName, string _productID) { } /// /// Log IAP First payment successful /// public override void LogIAPFirstPurchase(string _iap, string _id, string _paymentChannelOrderid, string _currency, string _price) { } /// /// Log IAP payment successful /// public override void LogIAPSuccess(string _iap, string _id, string _gameOrderid, string _paymentChannelOrderid, string _productToken, string _paymentMethod, string _currency, string _price) { } public override void SaveCloudArchiving(string content, Action callback) { var userId = PlayerPrefs.GetString("user_id"); var token = PlayerPrefs.GetString("token"); Server.Instance.SaveCloudArchiving(userId, token, content, callback); } public override void DetailCloudArchiving(Action callback) { var userId = PlayerPrefs.GetString("user_id"); var token = PlayerPrefs.GetString("token"); Server.Instance.DetailCloudArchiving(userId, token, (code, msg, content) => { callback.Invoke(code, code == 0 ? content : msg); }); } #endregion #region /// /// Set userid and third account /// /// userID (Unique user id) /// third account /// third account type public override void SetUserIDAndThirdAccount(string _userID, string _thirdAccount, ThirdAccountType _thirdAccountType) { Debug.Log("【TKGNativeInterfaceDefault】 SetUserIDAndThirdAccount _userID : " + _userID + " , _thirdAccount : " + _thirdAccount + " , _thirdAccountType : " + _thirdAccountType); } #endregion #region client iap pay result /// /// Client IAP Success /// public override void ClientIAPSuccess(string _productName, string _productID, string _purchaseOrderID, string _purchaseToken, string _currency, string _price, string _gameExtra) { // todo 直接回调支付成功 TKGSDKCallback.mSecondPurchaseCallback?.Invoke(_purchaseOrderID,_productName, _productID, true, _gameExtra); } /// /// Client IAP Failed /// public override void ClientIAPFailed(string _productName, string _productID, string _purchaseOrderID, string _purchaseToken, string _currency, string _price, string _gameExtra, IAPClientFailReasonType _failType) { // todo 直接回调支付失败 TKGSDKCallback.mSecondPurchaseCallback?.Invoke(_purchaseOrderID, _productName, _productID, false, _gameExtra); } #endregion } }