update: 更新自打点原生实现接口, 对齐 Android 和 iOS 的初始化接口参数
Signed-off-by: huyufei <yufei.hu@castbox.fm>
parent
d37c1c4216
commit
ac96959649
|
|
@ -1,28 +1,29 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace Guru
|
namespace Guru
|
||||||
{
|
{
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using com.adjust.sdk;
|
using com.adjust.sdk;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public class AdjustService
|
public class AdjustService
|
||||||
{
|
{
|
||||||
public const string Version = "1.6.1";
|
private const string Version = "1.6.1";
|
||||||
public const string AdjustVersion = "4.38.0"; // Adjust SDK Version
|
private const string AdjustVersion = "4.38.0"; // Adjust SDK Version
|
||||||
public static readonly string LOG_TAG = "Adjust";
|
private const string LOG_TAG = "[ADJUST]";
|
||||||
public static readonly float DelayTime = 1f; // 延迟启动时间
|
private const double delayTime = 1; // 延迟启动时间(s)
|
||||||
|
|
||||||
public const string K_IAP_PURCHASE = "iap_purchase"; // 固定点位事件
|
private const string K_IAP_PURCHASE = "iap_purchase"; // 固定点位事件
|
||||||
public 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, string, string> _onInitComplete;
|
||||||
private static Action<string> _onGetGoogleAdidHandler;
|
private static Action<string> _onGetGoogleAdidHandler;
|
||||||
|
|
||||||
private static string _googleAdId = "";
|
private string _googleAdId = "";
|
||||||
public static string GoogleAdId // GPS = Google Play Service
|
public string GoogleAdId // GPS = Google Play Service
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -31,11 +32,11 @@ namespace Guru
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string IDFA => Adjust.getIdfa();
|
public string IDFA => Adjust.getIdfa();
|
||||||
public static string IDFV => Adjust.getIdfv();
|
public string IDFV => Adjust.getIdfv();
|
||||||
|
|
||||||
private static string _adjustId = "";
|
private string _adjustId = "";
|
||||||
public static string AdjustId
|
public string AdjustId
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -47,6 +48,18 @@ namespace Guru
|
||||||
private static bool _isReady = false;
|
private static bool _isReady = false;
|
||||||
public static bool IsReady => _isReady;
|
public static bool IsReady => _isReady;
|
||||||
|
|
||||||
|
private static AdjustService _instance;
|
||||||
|
|
||||||
|
public static AdjustService Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_instance == null) _instance = new AdjustService();
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 启动服务
|
#region 启动服务
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -59,8 +72,12 @@ namespace Guru
|
||||||
/// <param name="onInitComplete">初始化完成的时候会返回 AdjustId </param>
|
/// <param name="onInitComplete">初始化完成的时候会返回 AdjustId </param>
|
||||||
/// <param name="onDeeplinkCallback"></param>
|
/// <param name="onDeeplinkCallback"></param>
|
||||||
/// <param name="onGetGoogleAdIdCallback"></param>
|
/// <param name="onGetGoogleAdIdCallback"></param>
|
||||||
public static void StartService(string appToken, string fbAppId = "", string firebaseId = "", string deviceId = "",
|
/// <param name="showLogs"></param>
|
||||||
Action<string, string, string> onInitComplete = null, Action<string> onDeeplinkCallback = null, Action<string> onGetGoogleAdIdCallback = null)
|
public void StartService(string appToken, string fbAppId = "", string firebaseId = "", string deviceId = "",
|
||||||
|
Action<string, string, string> onInitComplete = null,
|
||||||
|
Action<string> onDeeplinkCallback = null,
|
||||||
|
Action<string> onGetGoogleAdIdCallback = null,
|
||||||
|
bool showLogs = false)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(appToken))
|
if (string.IsNullOrEmpty(appToken))
|
||||||
{
|
{
|
||||||
|
|
@ -75,46 +92,55 @@ namespace Guru
|
||||||
|
|
||||||
AdjustEnvironment environment = GetAdjustEnvironment();
|
AdjustEnvironment environment = GetAdjustEnvironment();
|
||||||
AdjustConfig config = new AdjustConfig(appToken, environment);
|
AdjustConfig config = new AdjustConfig(appToken, environment);
|
||||||
config.setLogLevel(GetAdjustLogLevel());
|
|
||||||
config.setDelayStart(DelayTime);
|
|
||||||
config.setPreinstallTrackingEnabled(true); // Adjust Preinstall
|
config.setPreinstallTrackingEnabled(true); // Adjust Preinstall
|
||||||
config.setSessionSuccessDelegate(OnSessionSuccessCallback); // SessionSuccess
|
config.setLogLevel(GetLogLevel(showLogs));
|
||||||
config.setSessionFailureDelegate(OnSessionFailureCallback); // SessionFailed
|
config.setDelayStart(delayTime);
|
||||||
|
|
||||||
if(onDeeplinkCallback != null)
|
|
||||||
config.setDeferredDeeplinkDelegate(onDeeplinkCallback);
|
|
||||||
|
|
||||||
#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
|
||||||
|
// Deeplink Callback
|
||||||
|
if(onDeeplinkCallback != null)
|
||||||
|
config.setDeferredDeeplinkDelegate(onDeeplinkCallback);
|
||||||
|
/*
|
||||||
#if UNITY_EDITOR || DEBUG
|
#if UNITY_EDITOR || DEBUG
|
||||||
|
config.setSessionSuccessDelegate(OnSessionSuccessCallback); // SessionSuccess
|
||||||
|
config.setSessionFailureDelegate(OnSessionFailureCallback); // SessionFailed
|
||||||
config.setLogDelegate(log => LogI(LOG_TAG, log));
|
config.setLogDelegate(log => LogI(LOG_TAG, log));
|
||||||
config.setEventSuccessDelegate(OnEventSuccessCallback);
|
config.setEventSuccessDelegate(OnEventSuccessCallback);
|
||||||
config.setEventFailureDelegate(OnEventFailureCallback);
|
config.setEventFailureDelegate(OnEventFailureCallback);
|
||||||
config.setAttributionChangedDelegate(OnAttributionChangedCallback);
|
config.setAttributionChangedDelegate(OnAttributionChangedCallback);
|
||||||
#endif
|
#endif
|
||||||
// 检查场景实例
|
*/
|
||||||
SetupInstance();
|
// SetupInstance(); // 初始化场景示例
|
||||||
Adjust.start(config);
|
|
||||||
|
Adjust.start(config); // 启动服务
|
||||||
|
|
||||||
// 异步加载AdId
|
// 异步加载AdId
|
||||||
FetchGoogleAdIdAsync();
|
FetchGoogleAdIdAsync();
|
||||||
|
|
||||||
LogI(LOG_TAG, $"----- Start AdjustService[{Version}] AdjustVer:{AdjustVersion} -----");
|
LogI(LOG_TAG, $"----- Start AdjustService[{Version}] AdjustVer:{AdjustVersion} -----");
|
||||||
|
|
||||||
|
DelayedInitComplete(delayTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void DelayedInitComplete(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 static void FetchGoogleAdIdAsync()
|
private void FetchGoogleAdIdAsync()
|
||||||
{
|
{
|
||||||
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); // 返回 GSADID
|
_onGetGoogleAdidHandler?.Invoke(_googleAdId); // 返回 GoogleAdid
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +148,7 @@ namespace Guru
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 确保 Adjust 实例在场景中
|
/// 确保 Adjust 实例在场景中
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static void SetupInstance()
|
private void SetupInstance()
|
||||||
{
|
{
|
||||||
var go = UnityEngine.GameObject.Find(nameof(Adjust));
|
var go = UnityEngine.GameObject.Find(nameof(Adjust));
|
||||||
if (go == null)
|
if (go == null)
|
||||||
|
|
@ -147,7 +173,7 @@ namespace Guru
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pseudoId"></param>
|
/// <param name="pseudoId"></param>
|
||||||
/// <param name="deviceId"></param>
|
/// <param name="deviceId"></param>
|
||||||
public static void InstallEvent(string pseudoId, string deviceId)
|
private static void InstallEvent(string pseudoId, string deviceId)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(pseudoId))
|
if (string.IsNullOrEmpty(pseudoId))
|
||||||
{
|
{
|
||||||
|
|
@ -169,24 +195,19 @@ namespace Guru
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 事件回调函数
|
#region 事件回调函数
|
||||||
|
/*
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Session 启动后回调
|
/// Session 启动后回调
|
||||||
/// 回调中可以获取实际的 AdjustID
|
/// 回调中可以获取实际的 AdjustID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sessionSuccessData"></param>
|
/// <param name="sessionSuccessData"></param>
|
||||||
private static void OnSessionSuccessCallback(AdjustSessionSuccess sessionSuccessData)
|
private void OnSessionSuccessCallback(AdjustSessionSuccess sessionSuccessData)
|
||||||
{
|
{
|
||||||
LogI(LOG_TAG,$"{LOG_TAG} --- Session tracked successfully!");
|
|
||||||
|
|
||||||
var adid = sessionSuccessData.Adid;
|
var adid = sessionSuccessData.Adid;
|
||||||
_adjustId = adid;
|
LogI(LOG_TAG,$"{LOG_TAG} --- Session tracked successfully! Get Adid: {adid}");
|
||||||
_isReady = true;
|
|
||||||
_onInitComplete?.Invoke(adid, Adjust.getIdfv(), Adjust.getIdfa());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnAttributionChangedCallback(AdjustAttribution attributionData)
|
||||||
private static void OnAttributionChangedCallback(AdjustAttribution attributionData)
|
|
||||||
{
|
{
|
||||||
LogI(LOG_TAG, "Attribution changed!");
|
LogI(LOG_TAG, "Attribution changed!");
|
||||||
|
|
||||||
|
|
@ -231,7 +252,7 @@ namespace Guru
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnEventSuccessCallback(AdjustEventSuccess eventSuccessData)
|
private void OnEventSuccessCallback(AdjustEventSuccess eventSuccessData)
|
||||||
{
|
{
|
||||||
LogI(LOG_TAG, "Event tracked successfully!");
|
LogI(LOG_TAG, "Event tracked successfully!");
|
||||||
|
|
||||||
|
|
@ -266,7 +287,7 @@ namespace Guru
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnEventFailureCallback(AdjustEventFailure eventFailureData)
|
private void OnEventFailureCallback(AdjustEventFailure eventFailureData)
|
||||||
{
|
{
|
||||||
LogI(LOG_TAG, "Event tracking failed!");
|
LogI(LOG_TAG, "Event tracking failed!");
|
||||||
|
|
||||||
|
|
@ -303,7 +324,7 @@ namespace Guru
|
||||||
LogI(LOG_TAG, "WillRetry: " + eventFailureData.WillRetry.ToString());
|
LogI(LOG_TAG, "WillRetry: " + eventFailureData.WillRetry.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnSessionFailureCallback(AdjustSessionFailure sessionFailureData)
|
private void OnSessionFailureCallback(AdjustSessionFailure sessionFailureData)
|
||||||
{
|
{
|
||||||
LogE(LOG_TAG,"Session tracking failed!");
|
LogE(LOG_TAG,"Session tracking failed!");
|
||||||
|
|
||||||
|
|
@ -329,7 +350,7 @@ namespace Guru
|
||||||
|
|
||||||
LogI(LOG_TAG,"WillRetry: " + sessionFailureData.WillRetry.ToString());
|
LogI(LOG_TAG,"WillRetry: " + sessionFailureData.WillRetry.ToString());
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IAP收入上报
|
#region IAP收入上报
|
||||||
|
|
@ -339,7 +360,7 @@ namespace Guru
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="revenue"></param>
|
/// <param name="revenue"></param>
|
||||||
/// <param name="productID"></param>
|
/// <param name="productID"></param>
|
||||||
public static void TrackIAPPurchase(double revenue, string productID)
|
public void TrackIAPPurchase(double revenue, string productID)
|
||||||
{
|
{
|
||||||
string tokenID = Analytics.GetAdjustEventToken(K_IAP_PURCHASE);
|
string tokenID = Analytics.GetAdjustEventToken(K_IAP_PURCHASE);
|
||||||
if (string.IsNullOrEmpty(tokenID))
|
if (string.IsNullOrEmpty(tokenID))
|
||||||
|
|
@ -358,7 +379,7 @@ namespace Guru
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="revenue"></param>
|
/// <param name="revenue"></param>
|
||||||
/// <param name="productID"></param>
|
/// <param name="productID"></param>
|
||||||
public static void TrackSubPurchase(double revenue, string productID)
|
public void TrackSubPurchase(double revenue, string productID)
|
||||||
{
|
{
|
||||||
string tokenID = Analytics.GetAdjustEventToken(K_SUB_PURCHASE);
|
string tokenID = Analytics.GetAdjustEventToken(K_SUB_PURCHASE);
|
||||||
if (string.IsNullOrEmpty(tokenID))
|
if (string.IsNullOrEmpty(tokenID))
|
||||||
|
|
@ -380,7 +401,7 @@ namespace Guru
|
||||||
/// <param name="adSource"></param>
|
/// <param name="adSource"></param>
|
||||||
/// <param name="adUnitId"></param>
|
/// <param name="adUnitId"></param>
|
||||||
/// <param name="adPlacement"></param>
|
/// <param name="adPlacement"></param>
|
||||||
public static void TrackADRevenue(double value, string currency, string adSource, string adUnitId, string adPlacement)
|
public void TrackADRevenue(double value, string currency, string adSource, string adUnitId, string adPlacement)
|
||||||
{
|
{
|
||||||
var adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAppLovinMAX);
|
var adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAppLovinMAX);
|
||||||
if (string.IsNullOrEmpty(currency)) currency = "USD";
|
if (string.IsNullOrEmpty(currency)) currency = "USD";
|
||||||
|
|
@ -393,34 +414,6 @@ namespace Guru
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 关键属性上报
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 上报PseudoId
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="firebaseId"></param>
|
|
||||||
public static void ReportPseudoID(string firebaseId)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(firebaseId))
|
|
||||||
{
|
|
||||||
Adjust.addSessionCallbackParameter("user_pseudo_id", firebaseId); // 关联 user_pseudo_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 上报DeviceId
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="deviceId"></param>
|
|
||||||
public static void ReportDeviceId(string deviceId)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(deviceId))
|
|
||||||
{
|
|
||||||
Adjust.addSessionCallbackParameter("device_id", deviceId); // 关联 user_pseudo_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 工具接口
|
#region 工具接口
|
||||||
|
|
||||||
private static AdjustEnvironment GetAdjustEnvironment()
|
private static AdjustEnvironment GetAdjustEnvironment()
|
||||||
|
|
@ -432,23 +425,22 @@ namespace Guru
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AdjustLogLevel GetAdjustLogLevel()
|
private static AdjustLogLevel GetLogLevel(bool showLogs)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR || DEBUG
|
#if UNITY_EDITOR || DEBUG
|
||||||
return AdjustLogLevel.Verbose;
|
return AdjustLogLevel.Verbose;
|
||||||
#else
|
|
||||||
return AdjustLogLevel.Suppress;
|
|
||||||
#endif
|
#endif
|
||||||
|
return showLogs? AdjustLogLevel.Verbose : AdjustLogLevel.Suppress;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LogI(string tag, object conent)
|
private static void LogI(string tag, object content)
|
||||||
{
|
{
|
||||||
Debug.Log($"{tag} {conent}");
|
Debug.Log($"{tag} {content}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LogE(string tag, object conent)
|
private static void LogE(string tag, object content)
|
||||||
{
|
{
|
||||||
Debug.LogError($"{tag} {conent}");
|
Debug.LogError($"{tag} {content}");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: b4c3c75418e9c43c0a14510620fadda4
|
guid: 8a4c66f5ced9b4b17ae3bc306f01e33f
|
||||||
PluginImporter:
|
PluginImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
Binary file not shown.
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
static NSString *gameobjectName = @"GuruCallback";
|
static NSString *gameObjectName = @"GuruCallback";
|
||||||
static NSString *callbackName =@"OnCallback";
|
static NSString *callbackName =@"OnCallback";
|
||||||
|
|
||||||
static GuruAnalytics *_analytics;
|
static GuruAnalytics *_analytics;
|
||||||
|
|
@ -38,6 +38,9 @@ static double tch001MaxValue = 0.01;
|
||||||
static double tch02MaxValue = 0.2;
|
static double tch02MaxValue = 0.2;
|
||||||
static bool enableErrorLog = false;
|
static bool enableErrorLog = false;
|
||||||
|
|
||||||
|
static int eventCountAll;
|
||||||
|
static int eventCountUploaded;
|
||||||
|
|
||||||
NSString * const TchAdRevRoas001 = @"tch_ad_rev_roas_001";
|
NSString * const TchAdRevRoas001 = @"tch_ad_rev_roas_001";
|
||||||
NSString * const TchAdRevRoas02 = @"tch_ad_rev_roas_02";
|
NSString * const TchAdRevRoas02 = @"tch_ad_rev_roas_02";
|
||||||
NSString * const TchError = @"tch_error";
|
NSString * const TchError = @"tch_error";
|
||||||
|
|
@ -94,6 +97,31 @@ NSString * const TchError = @"tch_error";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 事件上报回调
|
||||||
|
+(void) getEventsStatistics {
|
||||||
|
[GuruAnalytics debug_eventsStatistics:^(NSInteger uploadedEventsCount, NSInteger loggedEventsCount) {
|
||||||
|
// 上报事件总量
|
||||||
|
eventCountAll = (int)uploadedEventsCount;
|
||||||
|
// 上报成功数量
|
||||||
|
eventCountUploaded = (int)loggedEventsCount;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 设置 BaseUrl
|
||||||
|
+(void) setBaseUrl: (const char *) baseUrl{
|
||||||
|
|
||||||
|
if (baseUrl != nullptr && strlen(baseUrl) == 0) {
|
||||||
|
return; // baseUrl 为空
|
||||||
|
}
|
||||||
|
|
||||||
|
[GuruAnalytics setEventsUploadEndPointWithHost:[U3DAnalytics charToString:baseUrl]];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 事件上报回调
|
// 事件上报回调
|
||||||
+(void) onEventCallback: (NSInteger)code andInfo:(NSString *) info{
|
+(void) onEventCallback: (NSInteger)code andInfo:(NSString *) info{
|
||||||
[U3DAnalytics sendMessage: [U3DAnalytics buildLogEventString: code andMessage:info]];
|
[U3DAnalytics sendMessage: [U3DAnalytics buildLogEventString: code andMessage:info]];
|
||||||
|
|
@ -203,9 +231,9 @@ NSString * const TchError = @"tch_error";
|
||||||
// 向Unity发送数据
|
// 向Unity发送数据
|
||||||
+(void) sendMessage: (NSString *)msg
|
+(void) sendMessage: (NSString *)msg
|
||||||
{
|
{
|
||||||
// NSLog(@"--- unityInitSDK222: %@:%@", gameobjectName, callbackName);
|
// NSLog(@"--- unityInitSDK222: %@:%@", gameObjectName, callbackName);
|
||||||
if(gameobjectName != nil && callbackName != nil){
|
if(gameObjectName != nil && callbackName != nil){
|
||||||
char *t1 = [U3DAnalytics finalChar: gameobjectName];
|
char *t1 = [U3DAnalytics finalChar: gameObjectName];
|
||||||
char *t2 = [U3DAnalytics finalChar: callbackName];
|
char *t2 = [U3DAnalytics finalChar: callbackName];
|
||||||
char *t3 = [U3DAnalytics finalChar: msg];
|
char *t3 = [U3DAnalytics finalChar: msg];
|
||||||
|
|
||||||
|
|
@ -250,7 +278,7 @@ NSString * const TchError = @"tch_error";
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
// 请求GDPR
|
// 请求GDPR
|
||||||
void unityInitAnalytics(const char *appId, const char *deviceInfo, bool isDebug, const char *baseUrl, const char *uploadIpAddress)
|
void unityInitAnalytics(const char *appId, const char *deviceInfo, bool isDebug, const char *baseUrl, const char *uploadIpAddressStr)
|
||||||
{
|
{
|
||||||
// NSLog(@"--- [iOS] init Analytics libs");
|
// NSLog(@"--- [iOS] init Analytics libs");
|
||||||
[GuruAnalytics initializeLibWithUploadPeriodInSecond:kUploadPeriodInSecond
|
[GuruAnalytics initializeLibWithUploadPeriodInSecond:kUploadPeriodInSecond
|
||||||
|
|
@ -260,11 +288,18 @@ extern "C" {
|
||||||
saasXAPPID:[U3DAnalytics charToString:appId]
|
saasXAPPID:[U3DAnalytics charToString:appId]
|
||||||
saasXDEVICEINFO:[U3DAnalytics charToString:deviceInfo]
|
saasXDEVICEINFO:[U3DAnalytics charToString:deviceInfo]
|
||||||
loggerDebug:isDebug];
|
loggerDebug:isDebug];
|
||||||
|
|
||||||
|
|
||||||
|
// 设置 baseUrl
|
||||||
|
[U3DAnalytics setBaseUrl:baseUrl];
|
||||||
|
|
||||||
|
// 设置 uploadIpAddress
|
||||||
|
// TODO: 当前的版本并不支持 uploadIpAddress, 后面的版本将 uploadIpAddressStr 转化为 Array<NSString> 传入接口
|
||||||
}
|
}
|
||||||
|
|
||||||
void unityInitCallback(const char *gameobject, const char *method){
|
void unityInitCallback(const char *gameObject, const char *method){
|
||||||
// NSLog(@"--- unityInitSDK111: %s:%s", gameobject, method);
|
// NSLog(@"--- unityInitSDK111: %s:%s", gameObject, method);
|
||||||
gameobjectName = [NSString stringWithUTF8String:gameobject];
|
gameObjectName = [NSString stringWithUTF8String:gameObject];
|
||||||
callbackName = [NSString stringWithUTF8String:method];
|
callbackName = [NSString stringWithUTF8String:method];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -298,10 +333,6 @@ extern "C" {
|
||||||
[GuruAnalytics setDeviceId:[U3DAnalytics charToString:did]];
|
[GuruAnalytics setDeviceId:[U3DAnalytics charToString:did]];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置 EndHostUrl
|
|
||||||
void unitySetEndPointWithHost(const char *host){
|
|
||||||
[GuruAnalytics setEventsUploadEndPointWithHost:[U3DAnalytics charToString:host]];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置用户属性
|
// 设置用户属性
|
||||||
void unitySetUserProperty(const char *key, const char *value){
|
void unitySetUserProperty(const char *key, const char *value){
|
||||||
|
|
@ -325,15 +356,24 @@ extern "C" {
|
||||||
|
|
||||||
// 打点事件成功率
|
// 打点事件成功率
|
||||||
void unityReportEventRate(void){
|
void unityReportEventRate(void){
|
||||||
[GuruAnalytics debug_eventsStatistics:^(NSInteger uploadedEventsCount, NSInteger loggedEventsCount) {
|
[U3DAnalytics getEventsStatistics];
|
||||||
|
|
||||||
// 上报事件总量
|
// 上报事件总量
|
||||||
[GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%ld", loggedEventsCount]
|
[GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%d", eventCountAll]
|
||||||
forName:@"lgd"];
|
forName:@"lgd"];
|
||||||
// 上报成功数量
|
// 上报成功数量
|
||||||
[GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%ld", uploadedEventsCount]
|
[GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%d", eventCountUploaded]
|
||||||
forName:@"uld"];
|
forName:@"uld"];
|
||||||
}];
|
|
||||||
|
|
||||||
|
// [GuruAnalytics debug_eventsStatistics:^(NSInteger uploadedEventsCount, NSInteger loggedEventsCount) {
|
||||||
|
//
|
||||||
|
// // 上报事件总量
|
||||||
|
// [GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%ld", loggedEventsCount]
|
||||||
|
// forName:@"lgd"];
|
||||||
|
// // 上报成功数量
|
||||||
|
// [GuruAnalytics setUserProperty:[NSString stringWithFormat:@"%ld", uploadedEventsCount]
|
||||||
|
// forName:@"uld"];
|
||||||
|
// }];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册内部日志 Error 监听
|
// 注册内部日志 Error 监听
|
||||||
|
|
@ -341,7 +381,13 @@ extern "C" {
|
||||||
[U3DAnalytics setEnableErrorLog:value];
|
[U3DAnalytics setEnableErrorLog:value];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上报事件数量总数
|
||||||
|
int unityGetEventsCountAll(){
|
||||||
|
return eventCountAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上报事件数量成功数量
|
||||||
|
int unityGetEventsCountUploaded(){
|
||||||
|
return eventCountUploaded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,13 @@ GuruAnalyticsLib 的 Unity 插件库
|
||||||
|
|
||||||
## Change Logs
|
## Change Logs
|
||||||
|
|
||||||
|
- [SDK Repo [ guru_analytics ] ](git@github.com:castbox/guru_analytics.git)
|
||||||
|
- [SDK Repo [ GuruAnalytics_iOS ] ](git@github.com:castbox/GuruAnalytics_iOS.git)
|
||||||
|
|
||||||
### 1.12.0
|
### 1.12.0
|
||||||
- Android 端对齐 `1.1.1`
|
- Android 端对齐 `1.1.1` ( 24 Jul 25 )
|
||||||
> Hash: bdb41ae118dcf438e8efe4f27d0ec856bc3147b0
|
> Hash: 6cb6a889022147511fb6bc8a632aa24a54f57c7c
|
||||||
- iOS 端对齐 `0.3.6`
|
- iOS 端对齐 `0.3.6` ( 24 May 31 )
|
||||||
> Hash: 0cd5ce7aa64e12caa7413c938a3164687b973843
|
> Hash: 0cd5ce7aa64e12caa7413c938a3164687b973843
|
||||||
- Pod 库改为 本地文件引用 (配合外部发行项目)
|
- Pod 库改为 本地文件引用 (配合外部发行项目)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ namespace Guru
|
||||||
|
|
||||||
|
|
||||||
private static GuruAnalytics _instance;
|
private static GuruAnalytics _instance;
|
||||||
|
|
||||||
public static GuruAnalytics Instance
|
public static GuruAnalytics Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
@ -110,40 +111,39 @@ namespace Guru
|
||||||
Debug.Log($"{Tag} --- Guru Analytics [{Version}] initialing...");
|
Debug.Log($"{Tag} --- Guru Analytics [{Version}] initialing...");
|
||||||
if (_isReady) return;
|
if (_isReady) return;
|
||||||
|
|
||||||
|
if (Agent == null)
|
||||||
|
{
|
||||||
|
// Agent 不存在则抛异常
|
||||||
|
throw new NotImplementedException($"{Tag} Agent is null, please check your implementation of IAnalyticsAgent.");
|
||||||
|
}
|
||||||
|
|
||||||
string groupId = "not_set";
|
string groupId = "not_set";
|
||||||
#if UNITY_ANDROID
|
string baseUrl = "";
|
||||||
|
string[] uploadIpAddress = null;
|
||||||
|
bool enabelErrorLog = true;
|
||||||
|
|
||||||
// 获取云控参数
|
// 获取云控参数
|
||||||
// TODO: 针对 GuruSDK 整体的云控值做一个分组的解决方案
|
// TODO: 针对 GuruSDK 整体的云控值做一个分组的解决方案
|
||||||
var guruInitParams = GuruAnalyticsConfigManager.GetInitParams();
|
var guruInitParams = GuruAnalyticsConfigManager.GetInitParams();
|
||||||
// 记录分组数据
|
|
||||||
|
if (guruInitParams != null)
|
||||||
|
{
|
||||||
|
// 如果分组实验打开
|
||||||
groupId = guruInitParams.groupId;
|
groupId = guruInitParams.groupId;
|
||||||
|
baseUrl = guruInitParams.baseUrl;
|
||||||
|
uploadIpAddress = guruInitParams.uploadIpAddress;
|
||||||
|
enabelErrorLog = guruInitParams.enableErrorLog;
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(firebaseId))
|
if (!string.IsNullOrEmpty(firebaseId))
|
||||||
{
|
Agent.SetFirebaseId(firebaseId); // 需要提前设置 Firebase ID
|
||||||
// 设置 Firebase ID
|
|
||||||
Instance.Agent?.SetFirebaseId(firebaseId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (guruInitParams.enabled && Instance.Agent is AnalyticsAgentAndroid androidAgent)
|
// 分组ID赋值
|
||||||
{
|
_experimentGroupId = groupId;
|
||||||
Instance.EnableErrorLog = true;
|
EnableErrorLog = enabelErrorLog;
|
||||||
Instance._experimentGroupId = groupId;
|
|
||||||
// 强制转换为 Android 的自打点初始化接口
|
// 初始化参数
|
||||||
androidAgent.InitAndroidConfig(appId, deviceInfo,
|
Agent.Init(appId, deviceInfo, baseUrl, uploadIpAddress, onInitComplete, isDebug);
|
||||||
guruInitParams.baseUrl, guruInitParams.uploadIpAddress, // <--- Android 附加参数
|
|
||||||
onInitComplete, isDebug);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 外部(云控)如果关闭使用 Android 自打点附加参数, 则使用正常的启动接口
|
|
||||||
Instance.Agent.Init(appId, deviceInfo, onInitComplete, isDebug);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
Instance.EnableErrorLog = false;
|
|
||||||
Instance._experimentGroupId = groupId;
|
|
||||||
// iOS 使用正常的启动接口
|
|
||||||
Instance.Agent.Init(appId, deviceInfo, onInitComplete, isDebug);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_isReady = true;
|
_isReady = true;
|
||||||
Debug.Log($"{Tag} --- Guru Analytics [{Version}] initialized.");
|
Debug.Log($"{Tag} --- Guru Analytics [{Version}] initialized.");
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,13 @@ namespace Guru
|
||||||
""experiments"": [{
|
""experiments"": [{
|
||||||
""groupId"": ""B"",
|
""groupId"": ""B"",
|
||||||
""baseUrl"": ""https://collect.saas.castbox.fm"",
|
""baseUrl"": ""https://collect.saas.castbox.fm"",
|
||||||
""uploadIpAddress"": [""13.248.248.135"", ""3.33.195.44""]
|
""uploadIpAddress"": [""13.248.248.135"", ""3.33.195.44""],
|
||||||
|
""enableErrorLog"": true
|
||||||
}, {
|
}, {
|
||||||
""groupId"": ""C"",
|
""groupId"": ""C"",
|
||||||
""baseUrl"": ""https://collect3.saas.castbox.fm"",
|
""baseUrl"": ""https://collect3.saas.castbox.fm"",
|
||||||
""uploadIpAddress"": [""34.107.185.54""]
|
""uploadIpAddress"": [""34.107.185.54""],
|
||||||
|
""enableErrorLog"": true
|
||||||
}]
|
}]
|
||||||
}";
|
}";
|
||||||
|
|
||||||
|
|
@ -97,12 +99,8 @@ namespace Guru
|
||||||
/// <param name="baseUrl"></param>
|
/// <param name="baseUrl"></param>
|
||||||
/// <param name="uploadIpAddress"></param>
|
/// <param name="uploadIpAddress"></param>
|
||||||
/// <param name="isEnable"></param>
|
/// <param name="isEnable"></param>
|
||||||
internal static GuruInitParams GetInitParams()
|
internal static GuruAnalyticsExperimentConfig GetInitParams()
|
||||||
{
|
{
|
||||||
var groupId = "";
|
|
||||||
var baseUrl = "";
|
|
||||||
string[] uploadIpAddress = null;
|
|
||||||
var isEnabled = true;
|
|
||||||
GuruAnalyticsExperimentConfig config;
|
GuruAnalyticsExperimentConfig config;
|
||||||
|
|
||||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #0 Analytics EXP saved groupId :{LocalExperimentGroupId}");
|
if(IsDebug) Debug.LogWarning($"{Tag} --- #0 Analytics EXP saved groupId :{LocalExperimentGroupId}");
|
||||||
|
|
@ -147,31 +145,8 @@ namespace Guru
|
||||||
if(IsDebug) Debug.LogWarning($"{Tag} --- #3.1 Try get config is Null -> using Default config");
|
if(IsDebug) Debug.LogWarning($"{Tag} --- #3.1 Try get config is Null -> using Default config");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config != null)
|
return config;
|
||||||
{
|
|
||||||
baseUrl = config.baseUrl;
|
|
||||||
groupId = config.groupId;
|
|
||||||
uploadIpAddress = config.uploadIpAddress;
|
|
||||||
LocalExperimentGroupId = groupId;
|
|
||||||
Debug.LogWarning($"{Tag} --- #3 Using Default config:: baseUrl:{baseUrl} groupId:{groupId} uploadIpAddress:[{ (uploadIpAddress != null ? string.Join(",", uploadIpAddress) : "null")}]");
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
isEnabled = false;
|
|
||||||
}
|
|
||||||
Debug.Log($"{Tag} --- Analytics EXP params:: groupId:{groupId} baseUrl:{baseUrl} uploadIpAddress:[{ (uploadIpAddress != null ? string.Join(",", uploadIpAddress) : "null")}]");
|
|
||||||
|
|
||||||
return new GuruInitParams()
|
|
||||||
{
|
|
||||||
groupId = groupId,
|
|
||||||
baseUrl = baseUrl,
|
|
||||||
uploadIpAddress = uploadIpAddress,
|
|
||||||
enabled = isEnabled
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static GuruAnalyticsExperimentConfig GetDefaultGuruAnalyticsExpConfig()
|
private static GuruAnalyticsExperimentConfig GetDefaultGuruAnalyticsExpConfig()
|
||||||
{
|
{
|
||||||
|
|
@ -261,20 +236,11 @@ namespace Guru
|
||||||
public string groupId;
|
public string groupId;
|
||||||
public string baseUrl;
|
public string baseUrl;
|
||||||
public string[] uploadIpAddress;
|
public string[] uploadIpAddress;
|
||||||
|
public bool enableErrorLog;
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return JsonParser.ToJson(this);
|
return JsonParser.ToJson(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
internal class GuruInitParams
|
|
||||||
{
|
|
||||||
public string groupId;
|
|
||||||
public string baseUrl;
|
|
||||||
public string[] uploadIpAddress;
|
|
||||||
public bool enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -7,7 +7,7 @@ namespace Guru
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IAnalyticsAgent
|
public interface IAnalyticsAgent
|
||||||
{
|
{
|
||||||
void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false);
|
void Init(string appId, string deviceInfo, string baseUrl, string[] uploadIpAddress, Action onInitComplete, bool isDebug = false);
|
||||||
void SetScreen(string screenName);
|
void SetScreen(string screenName);
|
||||||
void SetAdId(string id);
|
void SetAdId(string id);
|
||||||
void SetUserProperty(string key, string value);
|
void SetUserProperty(string key, string value);
|
||||||
|
|
|
||||||
|
|
@ -72,19 +72,6 @@ namespace Guru
|
||||||
|
|
||||||
#region 接口实现
|
#region 接口实现
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 默认的启动参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="appId"></param>
|
|
||||||
/// <param name="deviceInfo"></param>
|
|
||||||
/// <param name="onInitComplete"></param>
|
|
||||||
/// <param name="isDebug"></param>
|
|
||||||
public void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
|
|
||||||
{
|
|
||||||
InitAndroidConfig(appId, deviceInfo, "", null, onInitComplete, isDebug); // 调用接口
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 面向 Android 启动专用的 API
|
/// 面向 Android 启动专用的 API
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -94,7 +81,7 @@ namespace Guru
|
||||||
/// <param name="uploadIpAddress"></param>
|
/// <param name="uploadIpAddress"></param>
|
||||||
/// <param name="onInitComplete"></param>
|
/// <param name="onInitComplete"></param>
|
||||||
/// <param name="isDebug"></param>
|
/// <param name="isDebug"></param>
|
||||||
public void InitAndroidConfig(string appId, string deviceInfo, string baseUrl, string[]uploadIpAddress,Action onInitComplete = null, bool isDebug = false)
|
public void Init(string appId, string deviceInfo, string baseUrl, string[] uploadIpAddress,Action onInitComplete = null, bool isDebug = false)
|
||||||
{
|
{
|
||||||
_isDebug = isDebug;
|
_isDebug = isDebug;
|
||||||
string bundleId = Application.identifier;
|
string bundleId = Application.identifier;
|
||||||
|
|
@ -104,6 +91,7 @@ namespace Guru
|
||||||
|
|
||||||
|
|
||||||
/********* Android API **********
|
/********* Android API **********
|
||||||
|
* Ver U3DAnalytics-1.12.0
|
||||||
public static void init(String appId,
|
public static void init(String appId,
|
||||||
String deviceInfo,
|
String deviceInfo,
|
||||||
String bundleId,
|
String bundleId,
|
||||||
|
|
@ -122,10 +110,10 @@ namespace Guru
|
||||||
bool useWorker = true,
|
bool useWorker = true,
|
||||||
bool useCronet = false)
|
bool useCronet = false)
|
||||||
{
|
{
|
||||||
CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, useCronet, baseUrl, string.Join(",", uploadIpAddress ?? Array.Empty<string>())); // 调用接口
|
string uploadIpAddressStr= string.Join(",", uploadIpAddress ?? Array.Empty<string>());
|
||||||
|
CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, baseUrl, uploadIpAddressStr, useCronet); // 调用接口 1.12.0 参数顺序有调整
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SetScreen(string screenName)
|
public void SetScreen(string screenName)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(screenName)) return;
|
if (string.IsNullOrEmpty(screenName)) return;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,8 @@ namespace Guru
|
||||||
|
|
||||||
#if UNITY_IOS
|
#if UNITY_IOS
|
||||||
// ------------- U3DAnalytics.mm Interface -----------------
|
// ------------- U3DAnalytics.mm Interface -----------------
|
||||||
[DllImport(K_INTERNAL)] private static extern void unityInitAnalytics(string appId, string deviceInfo, bool isDebug);
|
// object-c: void unityInitAnalytics(const char *appId, const char *deviceInfo, bool isDebug, const char *baseUrl, const char *uploadIpAddressStr)
|
||||||
|
[DllImport(K_INTERNAL)] private static extern void unityInitAnalytics(string appId, string deviceInfo, bool isDebug, string baseUrl, string uploadIpAddressStr);
|
||||||
[DllImport(K_INTERNAL)] private static extern void unitySetUserID(string uid);
|
[DllImport(K_INTERNAL)] private static extern void unitySetUserID(string uid);
|
||||||
[DllImport(K_INTERNAL)] private static extern void unitySetScreen(string screenName);
|
[DllImport(K_INTERNAL)] private static extern void unitySetScreen(string screenName);
|
||||||
[DllImport(K_INTERNAL)] private static extern void unitySetAdId(string adId);
|
[DllImport(K_INTERNAL)] private static extern void unitySetAdId(string adId);
|
||||||
|
|
@ -57,11 +58,22 @@ namespace Guru
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
|
/// <summary>
|
||||||
|
/// 初始化 SDK
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="appId"></param>
|
||||||
|
/// <param name="deviceInfo"></param>
|
||||||
|
/// <param name="baseUrl"></param>
|
||||||
|
/// <param name="uploadIpAddress"></param>
|
||||||
|
/// <param name="onInitComplete"></param>
|
||||||
|
/// <param name="isDebug"></param>
|
||||||
|
public void Init(string appId, string deviceInfo, string baseUrl, string[] uploadIpAddress, Action onInitComplete, bool isDebug = false)
|
||||||
{
|
{
|
||||||
_isDebug = isDebug;
|
_isDebug = isDebug;
|
||||||
|
|
||||||
#if UNITY_IOS
|
#if UNITY_IOS
|
||||||
unityInitAnalytics(appId, deviceInfo, isDebug);
|
string uploadIpAddressStr = string.Join(",", uploadIpAddress ?? Array.Empty<string>());
|
||||||
|
unityInitAnalytics(appId, deviceInfo, isDebug, baseUrl, uploadIpAddressStr);
|
||||||
unityInitException(); // 初始化报错守护进程
|
unityInitException(); // 初始化报错守护进程
|
||||||
#endif
|
#endif
|
||||||
onInitComplete?.Invoke();
|
onInitComplete?.Invoke();
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,14 @@ namespace Guru
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
|
public void Init(string appId, string deviceInfo, string baseUrl, string[] uploadIpAddress, Action onInitComplete, bool isDebug = false)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
_isShowLog = true;
|
_isShowLog = true;
|
||||||
#endif
|
#endif
|
||||||
_isDebug = isDebug;
|
_isDebug = isDebug;
|
||||||
if(_isShowLog)
|
|
||||||
Debug.Log($"{TAG} init with Debug: <color=orange>{isDebug}</color> appId:{appId} deviceInfo:{deviceInfo}");
|
Debug.Log($"{TAG} Init {nameof(AnalyticsAgentMock)} with Debug:<color=orange>{isDebug}</color> appId:{appId} deviceInfo:{deviceInfo} baseUrl:{baseUrl} uploadIpAddress:{string.Join(",", uploadIpAddress ?? Array.Empty<string>())}");
|
||||||
|
|
||||||
onInitComplete?.Invoke();
|
onInitComplete?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
@ -106,19 +106,21 @@ namespace Guru
|
||||||
if(string.IsNullOrEmpty(ss)) continue;
|
if(string.IsNullOrEmpty(ss)) continue;
|
||||||
|
|
||||||
var p = ss.Split(':');
|
var p = ss.Split(':');
|
||||||
|
if (p.Length > 0)
|
||||||
|
{
|
||||||
|
var key = p[0].Replace("\"", "").Replace("{", "").Replace("}", "");
|
||||||
|
string v = "";
|
||||||
if (p.Length > 1)
|
if (p.Length > 1)
|
||||||
{
|
{
|
||||||
|
v = p[1].Replace("\"", "").Replace("{", "").Replace("}", "");
|
||||||
var key = p[0].Replace("\"", "").Replace("{", "").Replace("}", "");
|
if (!string.IsNullOrEmpty(v) && v.Length > 1)
|
||||||
var t = p[1].Replace("\"", "").Replace("{", "").Replace("}", "").Substring(0,1);
|
{
|
||||||
|
var t = v.Substring(0, 1);
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
if (t == "i" || t == "d") idx = 1;
|
if (t == "i" || t == "d") idx = 1;
|
||||||
var v = p[1].Replace("\"", "").Replace("{", "").Replace("}", "").Substring(idx);
|
|
||||||
|
|
||||||
|
|
||||||
// 字符串解析
|
// 字符串解析
|
||||||
switch(t){
|
switch (t)
|
||||||
|
{
|
||||||
case "i":
|
case "i":
|
||||||
sb.Append($"<color=orange>{key} : [int] {v}</color>\n");
|
sb.Append($"<color=orange>{key} : [int] {v}</color>\n");
|
||||||
break;
|
break;
|
||||||
|
|
@ -128,6 +130,17 @@ namespace Guru
|
||||||
default:
|
default:
|
||||||
sb.Append($"<color=orange>{key} : [string] {v}</color>\n");
|
sb.Append($"<color=orange>{key} : [string] {v}</color>\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append($"<color=orange>{key} : [string] {v}</color>\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append($"<color=orange>{key} : [string] {v}</color>\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@ namespace Guru
|
||||||
CalcTch02Value(revenue);
|
CalcTch02Value(revenue);
|
||||||
|
|
||||||
// #3 adjust_ad_revenue
|
// #3 adjust_ad_revenue
|
||||||
AdjustService.TrackADRevenue(data.value, data.currency, data.adSource, data.adUnitId, data.networkPlacement);
|
AdjustService.Instance.TrackADRevenue(data.value, data.currency, data.adSource, data.adUnitId, data.networkPlacement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ namespace Guru
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log.W(AdjustService.LOG_TAG,$"AdjustEventTokenDict 没有添加 event:{eventName}的Token值");
|
Log.W(TAG,$"AdjustEventTokenDict 没有添加 event:{eventName}的Token值");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -358,10 +358,10 @@ namespace Guru
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void LogCrashlytics(Exception exp)
|
public static void LogCrashlytics(Exception ex)
|
||||||
{
|
{
|
||||||
if (!_isInitOnce) return;
|
if (!_isInitOnce) return;
|
||||||
CrashlyticsAgent.LogException(exp);
|
CrashlyticsAgent.LogException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,10 @@ namespace Guru
|
||||||
|
|
||||||
public static void LogException(Exception ex)
|
public static void LogException(Exception ex)
|
||||||
{
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
Debug.LogException(ex);
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
if (!IsFirebaseReady) return;
|
if (!IsFirebaseReady) return;
|
||||||
Crashlytics.LogException(ex);
|
Crashlytics.LogException(ex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue