using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace WZ
{
#region Android接口代理类
///
/// RequestListener接口代理
///
class RequestListenerProxy : AndroidJavaProxy
{
private Action _callback;
public RequestListenerProxy(Action callback) : base("com.drive.master.game.RequestListener")
{
_callback = callback;
}
}
#endregion
public class TransferAndroidClass : MonoBehaviour
{
private static AndroidJavaClass transferSDKClass = null;
private static AndroidJavaObject currentActivity = null;
public static void Init()
{
#if UNITY_EDITOR
return;
#endif
if (transferSDKClass == null)
{
try
{
transferSDKClass = new AndroidJavaClass("com.drive.master.game.TransferSDK");
// 获取Unity当前Activity
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
currentActivity = unityPlayer.GetStatic("currentActivity");
}
}
catch (Exception e)
{
LoggerUtils.Error("TransferSDK初始化失败: " + e.Message);
return;
}
}
// 调用init方法
transferSDKClass.CallStatic("init");
RushSDKManager.Instance.LogEvent("transfer_sdk_init_success");
}
#region VPN权限相关
///
/// 检查是否有VPN权限
///
public static bool IsVpnPermissionGranted()
{
#if UNITY_EDITOR
return true;
#endif
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
return transferSDKClass.CallStatic("isVpnPermissionGranted");
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN权限失败: " + e.Message);
return false;
}
}
///
/// 申请VPN权限并连接VPN
///
public static void RequestVpnPermission(Action callback)
{
#if UNITY_EDITOR
callback?.Invoke(true,"");
return;
#endif
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
callback?.Invoke(false,"TransferSDK未初始化");
return;
}
try
{
transferSDKClass.CallStatic("requestVpnPermission", currentActivity, new RequestListenerProxy(callback));
}
catch (Exception e)
{
LoggerUtils.Error("申请VPN权限失败: " + e.Message);
callback?.Invoke(false,"申请VPN权限失败: " + e.Message);
}
}
///
/// 检查VPN连接状态
///
public static bool IsVpnConnected()
{
#if UNITY_EDITOR
return true;
#endif
RushSDKManager.Instance.LogEvent("isVpnConnected_check_start");
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
var result = transferSDKClass.CallStatic("isVpnConnected");
RushSDKManager.Instance.LogEvent(string.Format("isVpnConnected_{0}",result));
return result;
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN状态失败: " + e.Message);
return false;
}
}
#endregion
#region AdMob相关
///
/// 检查是否能使用AdMob
///
public static void IsAllowAdMob(Action callback)
{
#if UNITY_EDITOR
callback?.Invoke(true,"");
return;
#endif
if (transferSDKClass == null)
{
Debug.LogWarning("TransferSDK未初始化");
callback?.Invoke(false, "SDK未初始化");
return;
}
try
{
transferSDKClass.CallStatic("isAllowAdMob", new RequestListenerProxy(callback));
}
catch (Exception e)
{
LoggerUtils.Error("检查AdMob权限失败: " + e.Message);
callback?.Invoke(false, "SDK调用异常");
}
}
#endregion
}
}