155 lines
4.8 KiB
C#
155 lines
4.8 KiB
C#
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Guru
|
|
{
|
|
using System;
|
|
using UnityEngine;
|
|
|
|
public class AnalyticsAgentAndroid: IAnalyticsAgent
|
|
{
|
|
|
|
#if UNITY_ANDROID
|
|
|
|
public static readonly string AnalyticsClassName = "com.guru.unity.analytics.Analytics";
|
|
private static AndroidJavaClass _classAnalytics;
|
|
private static AndroidJavaClass ClassAnalytics => _classAnalytics ??= new AndroidJavaClass(AnalyticsClassName);
|
|
|
|
#endif
|
|
private static bool _isDebug = false;
|
|
public static bool UseWorker = true;
|
|
public static bool UseCronet = false;
|
|
public static string BaseUrl = "";
|
|
|
|
#region 工具方法
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 调用静态方法
|
|
/// </summary>
|
|
/// <param name="methodName"></param>
|
|
/// <param name="args"></param>
|
|
private static void CallStatic(string methodName, params object[] args)
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
if (ClassAnalytics != null)
|
|
{
|
|
ClassAnalytics.CallStatic(methodName, args);
|
|
if(_isDebug) Debug.Log($"{GuruAnalytics.Tag} Android call static :: {methodName}");
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError(e.Message);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/// <summary>
|
|
/// 调用静态方法
|
|
/// </summary>
|
|
/// <param name="methodName"></param>
|
|
/// <param name="args"></param>
|
|
/// <typeparam name="T"></typeparam>
|
|
private static T CallStatic<T>(string methodName, params object[] args)
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
if (ClassAnalytics != null)
|
|
{
|
|
if(_isDebug) Debug.Log($"{GuruAnalytics.Tag} Android call static <{typeof(T).ToString()}> :: {methodName}");
|
|
return ClassAnalytics.CallStatic<T>(methodName, args);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError(e.Message);
|
|
}
|
|
#endif
|
|
return default(T);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 接口实现
|
|
|
|
public async void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
|
|
{
|
|
_isDebug = isDebug;
|
|
string bundleId = Application.identifier;
|
|
// public static void init(String appId, String deviceInfo, String bundleId, boolean isDebug, boolean useWorker, boolean useCronet, String baseUrl)
|
|
|
|
// TODO: 将来把 CallStatic 转为异步实现
|
|
CallStatic("init", appId, deviceInfo, bundleId, isDebug, UseWorker, UseCronet, BaseUrl); // 调用接口
|
|
|
|
onInitComplete?.Invoke();
|
|
}
|
|
|
|
public void SetScreen(string screenName)
|
|
{
|
|
if (string.IsNullOrEmpty(screenName)) return;
|
|
CallStatic("setScreen", screenName);
|
|
}
|
|
public void SetAdId(string id)
|
|
{
|
|
if (string.IsNullOrEmpty(id)) return;
|
|
CallStatic("setAdId", id);
|
|
}
|
|
|
|
public void SetUserProperty(string key, string value)
|
|
{
|
|
if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value)) return;
|
|
CallStatic("setUserProperty", key, value);
|
|
}
|
|
public void SetFirebaseId(string id)
|
|
{
|
|
if (string.IsNullOrEmpty(id)) return;
|
|
CallStatic("setFirebaseId", id);
|
|
}
|
|
|
|
public void SetAdjustId(string id)
|
|
{
|
|
if (string.IsNullOrEmpty(id)) return;
|
|
CallStatic("setAdjustId", id);
|
|
}
|
|
|
|
public void SetDeviceId(string deviceId)
|
|
{
|
|
if (string.IsNullOrEmpty(deviceId)) return;
|
|
CallStatic("setDeviceId", deviceId);
|
|
}
|
|
|
|
public void SetUid(string uid)
|
|
{
|
|
if (string.IsNullOrEmpty(uid)) return;
|
|
CallStatic("setUid", uid);
|
|
}
|
|
|
|
public bool IsDebug => CallStatic<bool>("isDebug");
|
|
public void LogEvent(string eventName, string parameters, int priority = -1)
|
|
{
|
|
CallStatic("logEvent", eventName, parameters, priority);
|
|
}
|
|
public void ReportEventSuccessRate() => CallStatic("reportEventRate");
|
|
public void SetTch02Value(double value) => CallStatic("setTch02Value", value);
|
|
public void InitCallback(string objName, string method) => CallStatic("initCallback", objName, method);
|
|
|
|
private bool _enableErrorLog;
|
|
public bool EnableErrorLog
|
|
{
|
|
get => _enableErrorLog;
|
|
set
|
|
{
|
|
_enableErrorLog = value;
|
|
CallStatic("setEnableErrorLog", _enableErrorLog);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
} |