update: 优化了 AdjustService

Signed-off-by: huyufei <yufei.hu@castbox.fm>
胡宇飞 2024-08-07 22:09:42 +08:00
parent 9395ad6027
commit d22322ee26
1 changed files with 27 additions and 54 deletions

View File

@ -14,14 +14,11 @@ namespace Guru
private const string Version = "1.6.1"; private const string Version = "1.6.1";
private const string AdjustVersion = "4.38.0"; // Adjust SDK Version private const string AdjustVersion = "4.38.0"; // Adjust SDK Version
private const string LOG_TAG = "[ADJUST]"; private const string LOG_TAG = "[ADJUST]";
private const double delayTime = 1; // 延迟启动时间(s) private const double delayTime = 5; // 延迟启动时间(s)
private const string K_IAP_PURCHASE = "iap_purchase"; // 固定点位事件 private const string K_IAP_PURCHASE = "iap_purchase"; // 固定点位事件
private const string K_SUB_PURCHASE = "sub_purchase"; // 固定点位事件 private const string K_SUB_PURCHASE = "sub_purchase"; // 固定点位事件
private static Action<string, string, string> _onInitComplete;
private static Action<string> _onGetGoogleAdidHandler;
private string _googleAdId = ""; private string _googleAdId = "";
public string GoogleAdId // GPS = Google Play Service public string GoogleAdId // GPS = Google Play Service
{ {
@ -45,8 +42,8 @@ namespace Guru
} }
} }
private static bool _isReady = false; private bool _isReady = false;
public static bool IsReady => _isReady; public bool IsReady => _isReady;
private static AdjustService _instance; private static AdjustService _instance;
@ -73,7 +70,7 @@ namespace Guru
/// <param name="onDeeplinkCallback"></param> /// <param name="onDeeplinkCallback"></param>
/// <param name="onGetGoogleAdIdCallback"></param> /// <param name="onGetGoogleAdIdCallback"></param>
/// <param name="showLogs"></param> /// <param name="showLogs"></param>
public void StartService(string appToken, string fbAppId = "", string firebaseId = "", string deviceId = "", public async void Start(string appToken, string fbAppId = "", string firebaseId = "", string deviceId = "",
Action<string, string, string> onInitComplete = null, Action<string, string, string> onInitComplete = null,
Action<string> onDeeplinkCallback = null, Action<string> onDeeplinkCallback = null,
Action<string> onGetGoogleAdIdCallback = null, Action<string> onGetGoogleAdIdCallback = null,
@ -85,16 +82,24 @@ namespace Guru
return; return;
} }
_onInitComplete = onInitComplete; // 需要在 Adjust.start 前设置 <安装归因参数>
_onGetGoogleAdidHandler = onGetGoogleAdIdCallback; if (!string.IsNullOrEmpty(firebaseId))
{
InstallEvent(firebaseId, deviceId); // 需要在 Adjust.start 前设置 <安装归因参数> Adjust.addSessionCallbackParameter("user_pseudo_id", firebaseId);
}
if (!string.IsNullOrEmpty(deviceId))
{
Adjust.addSessionCallbackParameter("device_id", deviceId);
}
// 初始化启动 Config
AdjustEnvironment environment = GetAdjustEnvironment(); AdjustEnvironment environment = GetAdjustEnvironment();
AdjustConfig config = new AdjustConfig(appToken, environment); AdjustConfig config = new AdjustConfig(appToken, environment);
config.setPreinstallTrackingEnabled(true); // Adjust Preinstall config.setPreinstallTrackingEnabled(true); // Adjust Preinstall
config.setLogLevel(GetLogLevel(showLogs)); config.setLogLevel(GetLogLevel(showLogs));
config.setDelayStart(delayTime); // 延迟 1s 启动 Adjust保证 <安装归因参数> 成功注入 config.setDelayStart(delayTime); // 延迟 1s 启动 Adjust保证 <安装归因参数> 成功注入
#if UNITY_ANDROID #if UNITY_ANDROID
if (!string.IsNullOrEmpty(fbAppId)) config.setFbAppId(fbAppId); // 注入 MIR ID if (!string.IsNullOrEmpty(fbAppId)) config.setFbAppId(fbAppId); // 注入 MIR ID
#endif #endif
@ -116,31 +121,29 @@ namespace Guru
Adjust.start(config); // 启动服务 Adjust.start(config); // 启动服务
// 异步加载AdId // 异步加载AdId
FetchGoogleAdIdAsync(); FetchGoogleAdIdAsync(onGetGoogleAdIdCallback);
LogI(LOG_TAG, $"----- Start AdjustService[{Version}] AdjustVer:{AdjustVersion} -----"); LogI(LOG_TAG, $"----- Start AdjustService[{Version}] AdjustVer:{AdjustVersion} -----");
// 异步等待延时初始化执行成功 // 异步等待延时初始化执行成功
WaitInitCompleteAsync(delayTime * 2); // TODO: 应该在此处类似 Firebase 的continueWithMainThread 的能力的一个函数
// TODO: 应该让以下的任务推迟 Ns 在主线程执行
await Task.Delay(TimeSpan.FromMilliseconds((delayTime + 0.1) * 1000));
_isReady = true;
onInitComplete?.Invoke(Adjust.getAdid(), Adjust.getIdfv(), Adjust.getIdfa());
} }
private async void WaitInitCompleteAsync(double delaySeconds)
{
await Task.Delay(TimeSpan.FromMilliseconds(delaySeconds * 1000));
_isReady = true;
_onInitComplete?.Invoke(Adjust.getAdid(), Adjust.getIdfv(), Adjust.getIdfa());
}
/// <summary> /// <summary>
/// 异步拉取 Google Ad Id /// 异步拉取 Google Ad Id
/// </summary> /// </summary>
private void FetchGoogleAdIdAsync() private void FetchGoogleAdIdAsync(Action<string> onGetGoogleAdIdCallback = null)
{ {
Adjust.getGoogleAdId(gid => Adjust.getGoogleAdId(gid =>
{ {
if (!string.IsNullOrEmpty(gid)) if (!string.IsNullOrEmpty(gid))
{ {
_googleAdId = gid; // 获取Google AD ID _googleAdId = gid; // 获取Google AD ID
_onGetGoogleAdidHandler?.Invoke(_googleAdId); // 返回 GoogleAdid onGetGoogleAdIdCallback?.Invoke(_googleAdId); // 返回 GoogleAdid
} }
}); });
} }
@ -162,37 +165,7 @@ namespace Guru
} }
#endregion #endregion
#region 关键属性上报
/// <summary>
/// 安装事件上报
/// 该事件只有第一次上报有效
/// pseudoId 为空时不上报
/// deviceId 为空时也不上报 (一般不会为空)
/// </summary>
/// <param name="pseudoId"></param>
/// <param name="deviceId"></param>
private static void InstallEvent(string pseudoId, string deviceId)
{
if (string.IsNullOrEmpty(pseudoId))
{
Debug.LogWarning($">> Pseudo ID is Empty, skip install event reporting");
return;
}
if (string.IsNullOrEmpty(deviceId))
{
Debug.LogWarning($">> Device ID is Empty, skip install event reporting");
return;
}
Debug.LogWarning($"{LOG_TAG} --- addSessionCallbackParameter: user_pseudo_id:{pseudoId}, device_id:{deviceId}");
Adjust.addSessionCallbackParameter("user_pseudo_id", pseudoId);
Adjust.addSessionCallbackParameter("device_id", deviceId);
}
#endregion
#region 事件回调函数 #region 事件回调函数
/* /*