SDK_UnityMoney/Assets/BigoAds/Scripts/Platforms/Android/BigoSdkClient.cs

99 lines
3.3 KiB
C#

#if UNITY_ANDROID
using BigoAds.Scripts.Api;
using BigoAds.Scripts.Common;
using UnityEngine;
using BigoAds.Scripts.Api.Constant;
namespace BigoAds.Scripts.Platforms.Android
{
class BigoSdkClient : ISDK
{
private const string SDKClientClassName = AndroidPlatformTool.ClassPackage + ".BigoAdSdk";
private const string InitMethod = "initialize";
private const string InitSuccessMethod = "isInitialized";
private const string SDKVersionMethod = "getSDKVersion";
private const string InitListenerInterfaceName = AndroidPlatformTool.ClassPackage + ".BigoAdSdk$InitListener";
private const string ConsentOptionsClassName = AndroidPlatformTool.ClassPackage + ".ConsentOptions";
public void Init(BigoAdConfig config, BigoAdSdk.InitResultDelegate initResultDelegate)
{
InvokeNativeMethod(InitMethod, AndroidPlatformTool.GetGameActivity(),
AndroidPlatformTool.GetBigoConfig(config),
new InitCallBack(initResultDelegate));
}
public bool IsInitSuccess()
{
return InvokeNativeMethod<bool>(InitSuccessMethod);
}
public string GetSDKVersion()
{
return InvokeNativeMethod<string>("getSDKVersion");
}
public string GetSDKVersionName()
{
return InvokeNativeMethod<string>("getSDKVersionName");
}
public void SetUserConsent(ConsentOptions option, bool consent)
{
var clazz = new AndroidJavaClass(ConsentOptionsClassName);
AndroidJavaObject obj = null;
switch (option)
{
case ConsentOptions.GDPR:
obj = clazz.GetStatic<AndroidJavaObject>("GDPR");
break;
case ConsentOptions.CCPA:
obj = clazz.GetStatic<AndroidJavaObject>("CCPA");
break;
case ConsentOptions.LGPD:
obj = clazz.GetStatic<AndroidJavaObject>("LGPD");
break;
case ConsentOptions.COPPA:
obj = clazz.GetStatic<AndroidJavaObject>("COPPA");
break;
default:
break;
}
InvokeNativeMethod("setUserConsent", AndroidPlatformTool.GetGameActivity(), obj, consent);
}
public void AddExtraHost(string country, string host)
{
InvokeNativeMethod("addExtraHost", country, host);
}
private static void InvokeNativeMethod(string methodName, params object[] args)
{
new AndroidJavaClass(SDKClientClassName).CallStatic(methodName, args);
}
private static T InvokeNativeMethod<T>(string methodName, params object[] args)
{
return new AndroidJavaClass(SDKClientClassName).CallStatic<T>(methodName, args);
}
private class InitCallBack : AndroidJavaProxy
{
private event BigoAdSdk.InitResultDelegate InitListener;
public InitCallBack(BigoAdSdk.InitResultDelegate initResultDelegate) : base(InitListenerInterfaceName)
{
this.InitListener = initResultDelegate;
}
public void onInitialized()
{
InitListener?.Invoke();
}
}
}
}
#endif