添加Transfer SDK 类

This commit is contained in:
juncong lee 2026-01-04 16:14:20 +08:00
parent 9090c1102c
commit e08fa9a482
4 changed files with 189 additions and 0 deletions

View File

@ -70,6 +70,7 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
private void AttributionChangedDelegate(AdjustAttribution attribution) private void AttributionChangedDelegate(AdjustAttribution attribution)
{ {
Debug.Log("Attribution changed network: " + attribution.Network + " campaign: " + attribution.Campaign + " adgroup: " + attribution.Adgroup + " creative: " + attribution.Creative); Debug.Log("Attribution changed network: " + attribution.Network + " campaign: " + attribution.Campaign + " adgroup: " + attribution.Adgroup + " creative: " + attribution.Creative);
SetAttributionData(attribution);
if (m_start) return; if (m_start) return;
m_start = true; m_start = true;
callbackNetwork = attribution.Network; callbackNetwork = attribution.Network;
@ -81,6 +82,17 @@ public class AdjustManager : D_MonoSingleton<AdjustManager>
InvokeRepeating(nameof(CallGetAttributionAsync), 0, 1); InvokeRepeating(nameof(CallGetAttributionAsync), 0, 1);
} }
private void SetAttributionData(AdjustAttribution att)
{
var network = att.Network;
if(string.IsNullOrEmpty(network)) network = "Organic";
PlayerPrefsUtils.SavePlayerPrefsString(_adjustNetwork, network);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustCampaign, att?.Campaign);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustAdgroup, att?.Adgroup);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustCreative, att?.Creative);
PlayerPrefsUtils.SavePlayerPrefsString(_adjustClickLabel, att?.ClickLabel);
}
private async Task CallGetAttributionAsync() private async Task CallGetAttributionAsync()
{ {
callGetTimes++; callGetTimes++;

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 154bbe5c15f564b5aa6ef29b783e453e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,158 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace WZ
{
#region Android接口代理类
/// <summary>
/// RequestListener接口代理
/// </summary>
class RequestListenerProxy : AndroidJavaProxy
{
private Action<bool,string> _callback;
public RequestListenerProxy(Action<bool,string> 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 (transferSDKClass == null)
{
try
{
var name = "com.drive.master.game.TransferSDK";
LoggerUtils.Debug("TransferSDK初始化: class name = "+name);
transferSDKClass = new AndroidJavaClass(name);
// 获取Unity当前Activity
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
}
}
catch (Exception e)
{
LoggerUtils.Error("TransferSDK初始化失败: " + e.Message);
return;
}
}
// 调用init方法
transferSDKClass.CallStatic("init");
}
#region VPN权限相关
/// <summary>
/// 检查是否有VPN权限
/// </summary>
public static bool IsVpnPermissionGranted()
{
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
return transferSDKClass.CallStatic<bool>("isVpnPermissionGranted");
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN权限失败: " + e.Message);
return false;
}
}
/// <summary>
/// 申请VPN权限并连接VPN
/// </summary>
public static void RequestVpnPermission(Action<bool,string> callback)
{
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);
}
}
/// <summary>
/// 检查VPN连接状态
/// </summary>
public static bool IsVpnConnected()
{
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
return transferSDKClass.CallStatic<bool>("isVpnConnected");
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN状态失败: " + e.Message);
return false;
}
}
#endregion
#region AdMob相关
/// <summary>
/// 检查是否能使用AdMob
/// </summary>
public static void IsAllowAdMob(Action<bool, string> callback)
{
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
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c5bca977a1cdb4f9498b996d89b1d9ab
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: