99 lines
3.3 KiB
C#
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
|