173 lines
5.2 KiB
C#
173 lines
5.2 KiB
C#
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);
|
||
}
|
||
}
|
||
} |