SDK_UnityMoney/Assets/Script/Utils/ToponKwaiUtils.cs

173 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using UnityEngine;
using UnityEngine.Scripting;
namespace WZ
{
public class ToponKwaiUtils
{
// 标准的topon版本
// private const string KwaiATInitManagerPath = "com.anythink.network.kwai.KwaiATInitManager";
// private const string IsInitPath = "j";
// private const string MediationInitCallbackPath = "com.anythink.core.api.MediationInitCallback";
// 定制的topon版本
private const string KwaiATInitManagerPath = "com.thinkup.network.kwai.KwaiTUInitManager";
private const string IsInitPath = "mm";
public const string MediationInitCallbackPath = "com.thinkup.core.api.MediationInitCallback";
private static AndroidJavaObject Instance = null;
private static AndroidJavaObject GetInstance()
{
Instance ??= new AndroidJavaClass(KwaiATInitManagerPath).CallStatic<AndroidJavaObject>("getInstance");
return Instance;
}
/// <summary>
/// topon 是否已经初始化了 kwai
/// </summary>
/// <returns></returns>
public static bool IsInit()
{
try
{
return GetInstance().Get<bool>(IsInitPath);
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] IsInit , {e.Message}");
}
return false;
}
/// <summary>
/// 通过 topon 去初始化 kwai
/// </summary>
/// <param name="appID">kwai 的appid</param>
/// <param name="appToken">kwai 的app token</param>
/// <param name="callback">初始化的回调</param>
public static void InitSDK(string appID, string appToken, Action<bool, string> callback)
{
try
{
var hashMap = new AndroidJavaObject("java.util.HashMap");
hashMap.Call<AndroidJavaObject>("put", "app_id", appID);
hashMap.Call<AndroidJavaObject>("put", "app_token", appToken);
GetInstance().Call("initSDK", GetAndroidApplication(), hashMap, new MediationInitCallback(callback));
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] InitSDK , {e.Message}");
callback.Invoke(false, e.Message);
}
}
public static string GetAdapterVersion()
{
try
{
return GetInstance().Call<string>("getAdapterVersion");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetAdapterVersion , {e.Message}");
}
return "";
}
public static string GetNetworkVersion()
{
try
{
return GetInstance().Call<string>("getNetworkVersion");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkVersion , {e.Message}");
}
return "";
}
public static string GetNetworkName()
{
try
{
return GetInstance().Call<string>("getNetworkName");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkName , {e.Message}");
}
return "";
}
public static string GetNetworkSDKClass()
{
try
{
return GetInstance().Call<string>("getNetworkSDKClass");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkSDKClass , {e.Message}");
}
return "";
}
/// <summary>
/// 获取Android的Application对象android.app.Application
/// </summary>
/// <returns>Android Application对象AndroidJavaObject若在非Android平台返回null</returns>
private static AndroidJavaObject GetAndroidApplication()
{
// 只在Android平台执行
if (Application.platform != RuntimePlatform.Android)
{
return null;
}
try
{
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
return currentActivity.Call<AndroidJavaObject>("getApplication");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetAndroidApplication , {e.Message}");
return null;
}
}
}
public class MediationInitCallback : AndroidJavaProxy
{
private readonly Action<bool, string> _callback;
public MediationInitCallback(Action<bool, string> callback) : base(ToponKwaiUtils.MediationInitCallbackPath)
{
_callback = callback;
}
[Preserve]
public void onSuccess()
{
_callback.Invoke(true, "success");
}
[Preserve]
public void onFail(string error)
{
_callback.Invoke(false, error);
}
}
}