mergemilitary/Assets/TKGSDK/Common/GameInterface/TKGSDKManager.cs

656 lines
16 KiB
C#
Raw Normal View History

2022-09-09 14:35:49 +00:00
using System;
2022-05-23 13:39:59 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Touka;
2022-09-09 14:35:49 +00:00
public class TKGSDKManager : TKGSingleton<TKGSDKManager>
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
public bool IsNoAllAD
{
get => mIsNoAllAD;
set
{
mIsNoAllAD = value;
if (mIsNoAllAD)
{
PurchasedRemoveAds();
HideBanner();
}
}
}
private bool mIsNoAllAD = false;
public bool IsRemoveAds
{
get => mIsRemoveAds;
set
{
mIsRemoveAds = value;
if (mIsRemoveAds)
{
PurchasedRemoveAds();
HideBanner();
}
}
}
private bool mIsRemoveAds = false;
2022-05-23 13:39:59 +00:00
2022-07-04 11:17:39 +00:00
public bool IsIAPEnabled
{
get
{
AppChannel tChannel = GetChannel();
return (tChannel == AppChannel.AppStore_GB || tChannel == AppChannel.GooglePlay);
}
}
2022-09-09 14:35:49 +00:00
private int mLoginCount
{
get => PlayerPrefs.GetInt(nameof(mLoginCount), 0);
set => PlayerPrefs.SetInt(nameof(mLoginCount), value);
}
private int mPassCount
{
get => PlayerPrefs.GetInt(nameof(mPassCount), 0);
set => PlayerPrefs.SetInt(nameof(mPassCount), value);
}
private bool mHasPoppedReview
{
get => PlayerPrefs.GetInt(nameof(mHasPoppedReview), 0) == 1;
set => PlayerPrefs.SetInt(nameof(mHasPoppedReview), value ? 1 : 0);
}
private bool isInit = false;
2022-05-23 13:39:59 +00:00
private ITKGSDK m_sdkInterface;
protected override void OnInstanceCreate()
{
base.OnInstanceCreate();
2022-09-09 14:35:49 +00:00
2022-07-04 11:17:39 +00:00
m_sdkInterface = new TKGSDKNative();
2022-05-23 13:39:59 +00:00
}
/// <summary>
/// init sdk
/// </summary>
/// <param name="_initCallback"></param>
public void InitSDK(Action _initCallback = null)
{
2022-09-09 14:35:49 +00:00
if (isInit) return;
2022-05-23 13:39:59 +00:00
m_sdkInterface.InitSDK(_initCallback);
2022-09-09 14:35:49 +00:00
isInit = true;
mLoginCount++;
2022-05-23 13:39:59 +00:00
2022-07-04 11:17:39 +00:00
if (IsIAPEnabled)
{
2022-05-23 13:39:59 +00:00
#if USE_IAP
2022-07-04 11:17:39 +00:00
IAPTool.Instance.Initialize();
2022-05-23 13:39:59 +00:00
#endif
2022-07-04 11:17:39 +00:00
}
2022-05-23 13:39:59 +00:00
}
/// <summary>
/// Set game focus
/// </summary>
/// <param name="_gameFocusAction"></param>
public void SetGameFocusListener(Action<bool> _gameFocusAction)
{
m_sdkInterface.SetGameFocusListener(_gameFocusAction);
}
2022-09-09 14:35:49 +00:00
// reward click callback
public void SetRewardClickListener(Action _clickCallback = null)
{
m_sdkInterface.SetRewardClickListener(_clickCallback);
}
2022-05-23 13:39:59 +00:00
/// <summary>
/// Get channel
/// </summary>
/// <returns></returns>
public AppChannel GetChannel()
{
return m_sdkInterface.GetChannel();
}
2022-07-04 11:17:39 +00:00
/// <summary>
2022-09-09 14:35:49 +00:00
/// Set log enable
2022-07-04 11:17:39 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
public void SetLogEnable(bool _enable)
2022-07-04 11:17:39 +00:00
{
2022-09-09 14:35:49 +00:00
StaticOtherConfig.IsDebugLog = _enable;
m_sdkInterface.SetLogEnable(_enable);
2022-07-04 11:17:39 +00:00
}
2022-09-09 14:35:49 +00:00
#region Ads
// 去广告接口调用
public void PurchasedRemoveAds()
2022-07-04 11:17:39 +00:00
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.PurchasedRemoveAds();
2022-07-04 11:17:39 +00:00
}
2022-05-23 13:39:59 +00:00
/// <summary>
2022-09-09 14:35:49 +00:00
/// Show Interstitial Ad
2022-05-23 13:39:59 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
/// <param name="_adPos"> Name of interstitial ad placement. </param>
/// <param name="_callback"> Callback of interstitial ad close and show interstitial failed</param>
/// <param name="_IvType"> IVADType for distinguish interstitial ads frequency, default use iv1</param>
public void ShowInterstitialAd(TKGIVAdPositionName _adPos, Action _callback = null, IVADType _IvType = IVADType.IV1)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
#if UNITY_EDITOR || NO_AD
2022-05-23 13:39:59 +00:00
if (null != _callback)
{
2022-09-09 14:35:49 +00:00
Debug.Log("Need Show IV, in editor directly invoke callback.");
2022-05-23 13:39:59 +00:00
_callback.Invoke();
}
2022-07-04 11:17:39 +00:00
return;
2022-09-09 14:35:49 +00:00
2022-05-23 13:39:59 +00:00
#endif
2022-09-09 14:35:49 +00:00
if (IsNoAllAD || IsRemoveAds)
2022-05-23 13:39:59 +00:00
{
_callback?.Invoke();
}
else
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.ShowInterstitialAd(_adPos, _callback, _IvType);
2022-05-23 13:39:59 +00:00
}
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// Show Reward Ad
2022-05-23 13:39:59 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
/// <param name="_adPos"> Name of reward ad placement</param>
/// <param name="_rewardCallback"> true:reward succ, false: reward failed</param>
/// <param name="_showFailedCallback">Callback of reward ad show fail</param>
public void ShowRewardAd(TKGRVPositionName _adPos, Action<bool> _rewardCallback = null, Action _showFailedCallback = null, bool showSDKToast = false)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
#if UNITY_EDITOR || NO_AD
if (null != _rewardCallback)
2022-05-23 13:39:59 +00:00
{
_rewardCallback.Invoke(true);
}
return;
#endif
if (IsNoAllAD)
{
_rewardCallback?.Invoke(true);
}
else
{
2022-09-13 03:26:55 +00:00
m_sdkInterface.SetShowSDKToast(showSDKToast);
2022-09-09 14:35:49 +00:00
m_sdkInterface.ShowRewardAd(_adPos, _rewardCallback, _showFailedCallback);
2022-05-23 13:39:59 +00:00
}
}
2022-09-09 14:35:49 +00:00
public void ShowNative(RectTransform pRect, Camera pCam = null, string pAdPos = "")
{
#if !NO_AD
if (!IsNoAllAD && !IsRemoveAds)
{
m_sdkInterface.ShowNativeAd(pRect, pCam, pAdPos);
}
#endif
}
2022-05-23 13:39:59 +00:00
/// <summary>
/// Is Ready Interstitial
/// </summary>
/// <returns></returns>
public bool IsReadyInterstitialAd()
{
2022-09-13 03:26:55 +00:00
2022-05-23 13:39:59 +00:00
return m_sdkInterface.IsReadyInterstitialAd();
2022-09-09 14:35:49 +00:00
2022-05-23 13:39:59 +00:00
}
/// <summary>
/// Is Ready Reward
/// </summary>
/// <returns></returns>
public bool IsReadyRewardAd()
{
return m_sdkInterface.IsReadyRewardAd();
}
2022-09-09 14:35:49 +00:00
/// <summary>
/// Is Ready Native Ad
/// </summary>
/// <returns></returns>
public bool IsReadyNativeAd()
{
#if NO_AD
return false;
#else
return m_sdkInterface.IsReadyNativeAd();
#endif
}
/// <summary>
/// Show banner
/// </summary>
/// <param name="_bannerAlign">bannerAlign</param>
public void ShowBanner(TKGBannerAlign _bannerAlign)
{
#if !NO_AD
if (!IsNoAllAD && !IsRemoveAds)
{
m_sdkInterface.ShowBanner(_bannerAlign);
}
#endif
}
/// <summary>
/// Hide banner
/// </summary>
public void HideBanner()
{
m_sdkInterface.HideBanner();
}
/// <summary>
/// Remove Native
/// </summary>
public void RemoveNative()
{
m_sdkInterface.RemoveNativeAd();
}
2022-07-04 11:17:39 +00:00
#endregion
2022-05-23 13:39:59 +00:00
2022-07-04 11:17:39 +00:00
#region Log Event
2022-05-23 13:39:59 +00:00
2022-07-04 11:17:39 +00:00
#region Normal
2022-05-23 13:39:59 +00:00
/// <summary>
/// Log Event
/// </summary>
/// <param name="_eventSort"></param>
public void LogEvent(string _eventSort)
{
m_sdkInterface.LogEvent(_eventSort);
2022-09-09 14:35:49 +00:00
2022-05-23 13:39:59 +00:00
}
/// <summary>
/// Log Event
/// </summary>
/// <param name="_eventSort"></param>
/// <param name="_key"></param>
/// <param name="_value"></param>
public void LogEvent(string _eventSort, string _key, string _value)
{
m_sdkInterface.LogEvent(_eventSort, _key, _value);
}
/// <summary>
/// Log Event
/// </summary>
/// <param name="_eventSort"></param>
/// <param name="_key01"></param>
/// <param name="_value01"></param>
/// <param name="_key02"></param>
/// <param name="_value02"></param>
public void LogEvent(string _eventSort, string _key01, string _value01, string _key02, string _value02)
{
m_sdkInterface.LogEvent(_eventSort, _key01, _value01, _key02, _value02);
}
/// <summary>
/// Log Event
/// </summary>
/// <param name="_eventSort"></param>
/// <param name="_eventDic"></param>
public void LogEvent(string _eventSort, Dictionary<string, string> _eventDic = null)
{
m_sdkInterface.LogEvent(_eventSort, _eventDic);
}
#endregion
#region Level Event
/// <summary>
2022-09-09 14:35:49 +00:00
/// Level start
2022-05-23 13:39:59 +00:00
/// </summary>
/// <param name="_level"></param>
2022-09-09 14:35:49 +00:00
public void LevelStart(int _level)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
LevelStart(_level.ToString());
2022-05-23 13:39:59 +00:00
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// Level start
2022-05-23 13:39:59 +00:00
/// </summary>
/// <param name="_level"></param>
2022-09-09 14:35:49 +00:00
public void LevelStart(string _level)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.LevelStart(_level);
2022-05-23 13:39:59 +00:00
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// Level end
2022-05-23 13:39:59 +00:00
/// </summary>
/// <param name="_level"></param>
/// <param name="_win"></param>
2022-09-09 14:35:49 +00:00
public bool LevelEnd(int _level, StageResult _stageResult)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
return LevelEnd(_level.ToString(), _stageResult);
2022-05-23 13:39:59 +00:00
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// Level end,if return false, it means review pops up.
2022-05-23 13:39:59 +00:00
/// </summary>
/// <param name="_level"></param>
/// <param name="_win"></param>
2022-09-09 14:35:49 +00:00
public bool LevelEnd(string _level, StageResult _stageResult)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.LevelEnd(_level, _stageResult);
if (_stageResult == StageResult.StageSucc)
{
mPassCount++;
#if UNITY_IOS//only ios has review popup
return !CheckReviewPop(mPassCount);
#endif
}
return true;
2022-05-23 13:39:59 +00:00
}
2022-09-09 14:35:49 +00:00
private bool CheckReviewPop(int pLevel)
{
if (mHasPoppedReview)
return false;
if (mLoginCount == 1 && pLevel == StaticOtherConfig.FirstLoginPopLevel)
{
Debug.Log("pop first review");
mHasPoppedReview = true;
Review();
return true;
}
else if (mLoginCount > 1 && pLevel == StaticOtherConfig.OtherLoginPopLevel)
{
Debug.Log("pop other review");
mHasPoppedReview = true;
Review();
return true;
}
return false;
}
2022-05-23 13:39:59 +00:00
#endregion
#region Reward Ad Button Show
/// <summary>
/// Log Reward ad button show
/// </summary>
/// <param name="_pos"></param>
public void LogRewardAdBtnShow(string _pos)
{
m_sdkInterface.LogRewardAdBtnShow(_pos);
}
#endregion
#region Tracking Event
/// <summary>
/// Log Tracking Event
/// </summary>
/// <param name="_eventType"></param>
2022-09-09 14:35:49 +00:00
private void LogTrackingEvent(TrackingEventType _eventType)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
//m_sdkInterface.LogTrackingEvent(_eventType);
2022-05-23 13:39:59 +00:00
}
#endregion
#endregion
#region Online Config
/// <summary>
/// get config - string
/// </summary>
/// <param name="_key"></param>
/// <returns></returns>
2022-09-09 14:35:49 +00:00
public string GetConfigStr(TKGParamKey _key)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
return m_sdkInterface.GetConfigStr(_key.ToString());
2022-05-23 13:39:59 +00:00
}
/// <summary>
/// get config - int
/// </summary>
/// <param name="_key"></param>
/// <returns></returns>
2022-09-09 14:35:49 +00:00
public int GetConfigInt(TKGParamKey _key)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
return m_sdkInterface.GetConfigInt(_key.ToString());
2022-05-23 13:39:59 +00:00
}
2022-09-09 14:35:49 +00:00
2022-05-23 13:39:59 +00:00
/// <summary>
/// get config - bool
/// </summary>
/// <param name="_key"></param>
/// <returns></returns>
2022-09-09 14:35:49 +00:00
public bool GetConfigBool(TKGParamKey _key)
2022-05-23 13:39:59 +00:00
{
2022-09-09 14:35:49 +00:00
return m_sdkInterface.GetConfigBool(_key.ToString());
2022-05-23 13:39:59 +00:00
}
#endregion
#region Others (common)
/// <summary>
/// review
/// </summary>
public void Review()
{
m_sdkInterface.Review();
}
2022-09-09 14:35:49 +00:00
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
2022-05-23 13:39:59 +00:00
/// <summary>
/// open privacy url
/// </summary>
2022-09-09 14:35:49 +00:00
//public void OpenPrivacyURL()
//{
// m_sdkInterface.OpenPrivacyURL();
//}
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
/// 使用 OpenPolicyPop 接口 === Use OpenPolicyPop
2022-05-23 13:39:59 +00:00
/// <summary>
/// open user agreement url
/// </summary>
2022-09-09 14:35:49 +00:00
//public void OpenUserTermURL()
//{
// m_sdkInterface.OpenUserTermURL();
//}
2022-05-23 13:39:59 +00:00
/// <summary>
/// open more game
/// </summary>
public void OpenMoreGame()
{
m_sdkInterface.OpenMoreGame();
}
2022-11-07 03:41:19 +00:00
/// <summary>
/// show picture cross
/// </summary>
public bool showPictureCross()
{
return m_sdkInterface.showPictureCross();
}
/// <summary>
/// remove picture cross
/// </summary>
public void removePictureCross()
{
m_sdkInterface.removePictureCross();
}
/// <summary>
/// show more game icon
/// </summary>
public bool showMoreGameIcon()
{
return m_sdkInterface.showMoreGameIcon();
}
/// <summary>
/// remove more game icon
/// </summary>
public void removeMoreGameIcon()
{
m_sdkInterface.removeMoreGameIcon();
}
2022-05-23 13:39:59 +00:00
/// <summary>
/// open url by browser
/// </summary>
/// <param name="_url"></param>
public void OpenUrlByBrowser(string _url)
{
m_sdkInterface.OpenUrlByBrowser(_url);
}
2022-09-09 14:35:49 +00:00
public void OpenPolicyPop()
{
m_sdkInterface.OpenPolicyPop();
}
2022-05-23 13:39:59 +00:00
/// <summary>
/// shake
/// </summary>
/// <param name="_shakeType">0 light,1 medium,2 heavy</param>
/// <param name="_intensity">ios 0~1, android any num</param>
public void Shake(int _shakeType, float _intensity = 1)
{
m_sdkInterface.Shake(_shakeType, _intensity);
}
2022-07-04 11:17:39 +00:00
/// <summary>
2022-09-09 14:35:49 +00:00
/// share txt
/// </summary>
/// <param name="_shareTxt"></param>
public void Share(string shareText)
{
m_sdkInterface.ShareTxt(shareText);
}
/// <summary>
/// regist APNS
/// </summary>
public void RegistAPNS()
{
m_sdkInterface.RegistAPNS();
}
/// <summary>
/// shake
/// </summary>
/// <param name="notiName">notification identifier</param>
/// <param name="body">The body of the notification.</param>
/// <param name="fireDate">notify after the time interval. format:yyyy-MM-dd HH:mm:ss </param>
/// <param name="badge">The application badge number.</param>
/// <param name="title">The title of the notification.</param>
/// <param name="subTitle">The subtitle of the notification.</param>
public void RegistNotification(string notiId, string body, string fireDate, int badge = 1, string title = "", string subTitle = "")
{
m_sdkInterface.RegistNotification(notiId,body,fireDate,badge,title,subTitle);
}
/// <summary>
/// remove all notification
2022-07-04 11:17:39 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
public void RemoveAllNotifications()
{
m_sdkInterface.RemoveAllNotifications();
}
/// <summary>
/// remove notification by notification identifier
/// </summary>
/// <param name="notiId">notification identifier</param>
public void RemoveNotification(string notiId)
{
m_sdkInterface.RemoveNotification(notiId);
}
#endregion
#region others
2022-09-13 03:26:55 +00:00
public void Toast(string text)
{
m_sdkInterface.Toast(text);
}
2022-09-09 14:35:49 +00:00
/// <summary>
/// Set user source listener
/// only call first can back source
/// </summary>
/// <param name="_userSourceAction"> true : origin userfalse : not origin user </param>2
2022-07-04 11:17:39 +00:00
public void SetUserSourceListener(Action<bool, string> _userSourceAction)
{
m_sdkInterface.SetUserSourceListener(_userSourceAction);
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// Set user source listener
/// only call first can back source
/// with campaginName
2022-07-04 11:17:39 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
/// <param name="_userSourceAction"> true : origin userfalse : not origin user </param>2
public void SetUserSourceListener(Action<bool, string, string> _userSourceAction)
2022-07-04 11:17:39 +00:00
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.SetUserSourceListener(_userSourceAction);
2022-07-04 11:17:39 +00:00
}
/// <summary>
2022-09-09 14:35:49 +00:00
/// set common callback
2022-07-04 11:17:39 +00:00
/// </summary>
2022-09-09 14:35:49 +00:00
/// <param name="_commonCallbackAction"></param>
public void SetTKGCommonCallback(Action<CommonCallbackCode, string> _commonCallbackAction)
2022-07-04 11:17:39 +00:00
{
2022-09-09 14:35:49 +00:00
m_sdkInterface.SetTKGCommonCallback(_commonCallbackAction);
2022-07-04 11:17:39 +00:00
}
2022-09-09 14:35:49 +00:00
2022-09-13 03:26:55 +00:00
/// <summary>
/// 注册功能开关回调
/// </summary>
/// <param name="_functionKeys"> 各功能名称 </param>
/// <param name="_functionSwitchCallback"> 回调事件,回来每个功能名称及对应开关 </param>
public void SetFunctionSwitchListener(List<FunctionType> _functionKeys, Action<FunctionType, bool> _functionSwitchCallback)
{
m_sdkInterface.SetFunctionSwitchListener(_functionKeys, _functionSwitchCallback);
}
#endregion
2022-05-23 13:39:59 +00:00
}