508 lines
18 KiB
C#
508 lines
18 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using ThinkingData.Analytics.Utils;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace ThinkingData.Analytics.Wrapper
|
|
{
|
|
public partial class TDWrapper
|
|
{
|
|
public static MonoBehaviour sMono;
|
|
private static TDDynamicSuperPropertiesHandler mDynamicSuperProperties;
|
|
private static Dictionary<string, TDAutoTrackEventHandler> mAutoTrackEventCallbacks = new Dictionary<string, TDAutoTrackEventHandler>();
|
|
private static Dictionary<string, Dictionary<string, object>> mAutoTrackProperties = new Dictionary<string, Dictionary<string, object>>();
|
|
private static Dictionary<string, TDAutoTrackEventType> mAutoTrackEventInfos = new Dictionary<string, TDAutoTrackEventType>();
|
|
private static System.Random rnd = new System.Random();
|
|
|
|
private static string default_appId = null;
|
|
|
|
// add Dictionary to Dictionary
|
|
public static void AddDictionary(Dictionary<string, object> originalDic, Dictionary<string, object> subDic)
|
|
{
|
|
if (originalDic != subDic)
|
|
{
|
|
foreach (KeyValuePair<string, object> kv in subDic)
|
|
{
|
|
originalDic[kv.Key] = kv.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static string serilize<T>(Dictionary<string, T> data) {
|
|
return TDMiniJson.Serialize(data, getTimeString);
|
|
}
|
|
|
|
public static void ShareInstance(TDConfig token, MonoBehaviour mono, bool initRequired = true)
|
|
{
|
|
sMono = mono;
|
|
if (string.IsNullOrEmpty(default_appId)) default_appId = token.appId;
|
|
if (initRequired) init(token);
|
|
}
|
|
|
|
public static void EnableLog(bool enable)
|
|
{
|
|
enableLog(enable);
|
|
}
|
|
|
|
public static void SetVersionInfo(string version)
|
|
{
|
|
setVersionInfo("Unity", version);
|
|
}
|
|
|
|
public static void SetDistinctId(string uniqueId, string appId)
|
|
{
|
|
identify(uniqueId, appId);
|
|
}
|
|
|
|
public static string GetDistinctId(string appId)
|
|
{
|
|
return getDistinctId(appId);
|
|
}
|
|
|
|
public static void Login(string accountId, string appId)
|
|
{
|
|
login(accountId, appId);
|
|
}
|
|
|
|
public static void Logout(string appId)
|
|
{
|
|
logout(appId);
|
|
}
|
|
|
|
public static void EnableAutoTrack(TDAutoTrackEventType events, Dictionary<string, object> properties, string appId)
|
|
{
|
|
if (string.IsNullOrEmpty(appId)) appId = default_appId;
|
|
UpdateAutoTrackSceneInfos(events, appId);
|
|
SetAutoTrackProperties(events, properties, appId);
|
|
enableAutoTrack(events, properties, appId);
|
|
if ((events & TDAutoTrackEventType.AppSceneLoad) != 0)
|
|
{
|
|
TrackSceneLoad(SceneManager.GetActiveScene(), appId);
|
|
}
|
|
}
|
|
|
|
public static void EnableAutoTrack(TDAutoTrackEventType events, TDAutoTrackEventHandler eventCallback, string appId)
|
|
{
|
|
if (string.IsNullOrEmpty(appId)) appId = default_appId;
|
|
UpdateAutoTrackSceneInfos(events, appId);
|
|
mAutoTrackEventCallbacks[appId] = eventCallback;
|
|
//mAutoTrackEventCallback = eventCallback;
|
|
enableAutoTrack(events, eventCallback, appId);
|
|
if ((events & TDAutoTrackEventType.AppSceneLoad) != 0)
|
|
{
|
|
TrackSceneLoad(SceneManager.GetActiveScene(), appId);
|
|
}
|
|
}
|
|
|
|
private static string TDAutoTrackEventType_APP_SCENE_LOAD = "AppSceneLoad";
|
|
private static string TDAutoTrackEventType_APP_SCENE_UNLOAD = "AppSceneUnload";
|
|
public static void SetAutoTrackProperties(TDAutoTrackEventType events, Dictionary<string, object> properties, string appId)
|
|
{
|
|
if ((events & TDAutoTrackEventType.AppSceneLoad) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_SCENE_LOAD))
|
|
{
|
|
AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_LOAD], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_LOAD] = properties;
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppSceneUnload) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_SCENE_UNLOAD))
|
|
{
|
|
AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_UNLOAD], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_UNLOAD] = properties;
|
|
}
|
|
setAutoTrackProperties(events, properties, appId);
|
|
}
|
|
|
|
public static void TrackSceneLoad(Scene scene, string appId = "")
|
|
{
|
|
Dictionary<string, object> properties = new Dictionary<string, object>() {
|
|
{ "#scene_name", scene.name },
|
|
{ "#scene_path", scene.path }
|
|
};
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_SCENE_LOAD))
|
|
{
|
|
AddDictionary(properties, mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_LOAD]);
|
|
}
|
|
if (string.IsNullOrEmpty(appId))
|
|
{
|
|
foreach (var kv in mAutoTrackEventInfos)
|
|
{
|
|
Dictionary<string, object> finalProperties = new Dictionary<string, object>(properties);
|
|
if (mAutoTrackEventCallbacks.ContainsKey(kv.Key))
|
|
{
|
|
AddDictionary(finalProperties, mAutoTrackEventCallbacks[kv.Key].GetAutoTrackEventProperties((int)TDAutoTrackEventType.AppSceneLoad, properties));
|
|
}
|
|
if ((kv.Value & TDAutoTrackEventType.AppSceneLoad) != 0)
|
|
{
|
|
Track("ta_scene_loaded", finalProperties, kv.Key);
|
|
}
|
|
if ((kv.Value & TDAutoTrackEventType.AppSceneUnload) != 0)
|
|
{
|
|
TimeEvent("ta_scene_unloaded", kv.Key);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Dictionary<string, object> finalProperties = new Dictionary<string, object>(properties);
|
|
if (mAutoTrackEventCallbacks.ContainsKey(appId))
|
|
{
|
|
AddDictionary(finalProperties, mAutoTrackEventCallbacks[appId].GetAutoTrackEventProperties((int)TDAutoTrackEventType.AppSceneLoad, properties));
|
|
}
|
|
Track("ta_scene_loaded", finalProperties, appId);
|
|
TimeEvent("ta_scene_unloaded", appId);
|
|
}
|
|
}
|
|
|
|
public static void TrackSceneUnload(Scene scene, string appId = "")
|
|
{
|
|
Dictionary<string, object> properties = new Dictionary<string, object>() {
|
|
{ "#scene_name", scene.name },
|
|
{ "#scene_path", scene.path }
|
|
};
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_SCENE_UNLOAD))
|
|
{
|
|
AddDictionary(properties, mAutoTrackProperties[TDAutoTrackEventType_APP_SCENE_UNLOAD]);
|
|
}
|
|
foreach (var kv in mAutoTrackEventInfos)
|
|
{
|
|
Dictionary<string, object> finalProperties = new Dictionary<string, object>(properties);
|
|
if (mAutoTrackEventCallbacks.ContainsKey(kv.Key))
|
|
{
|
|
AddDictionary(finalProperties, mAutoTrackEventCallbacks[kv.Key].GetAutoTrackEventProperties((int)TDAutoTrackEventType.AppSceneUnload, properties));
|
|
}
|
|
if ((kv.Value & TDAutoTrackEventType.AppSceneUnload) != 0)
|
|
{
|
|
Track("ta_scene_unloaded", finalProperties, kv.Key);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateAutoTrackSceneInfos(TDAutoTrackEventType events, string appId = "")
|
|
{
|
|
if (string.IsNullOrEmpty(appId)) appId = default_appId;
|
|
mAutoTrackEventInfos[appId] = events;
|
|
}
|
|
|
|
private static Dictionary<string, object> getFinalEventProperties(Dictionary<string, object> properties)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
|
|
if (null != mDynamicSuperProperties)
|
|
{
|
|
Dictionary<string, object> finalProperties = new Dictionary<string, object>();
|
|
TDPropertiesChecker.MergeProperties(mDynamicSuperProperties.GetDynamicSuperProperties(), finalProperties);
|
|
TDPropertiesChecker.MergeProperties(properties, finalProperties);
|
|
return finalProperties;
|
|
}
|
|
else
|
|
{
|
|
return properties;
|
|
}
|
|
|
|
}
|
|
public static void Track(string eventName, Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
track(eventName, getFinalEventProperties(properties), appId);
|
|
}
|
|
|
|
public static void TrackStr(string eventName, string properties, string appId)
|
|
{
|
|
trackStr(eventName, properties, appId);
|
|
}
|
|
|
|
public static void Track(string eventName, Dictionary<string, object> properties, DateTime datetime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
track(eventName, getFinalEventProperties(properties), datetime, appId);
|
|
}
|
|
|
|
public static void Track(string eventName, Dictionary<string, object> properties, DateTime datetime, TimeZoneInfo timeZone, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
track(eventName, getFinalEventProperties(properties), datetime, timeZone, appId);
|
|
}
|
|
|
|
public static void TrackForAll(string eventName, Dictionary<string, object> properties)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
trackForAll(eventName, getFinalEventProperties(properties));
|
|
}
|
|
|
|
public static void Track(TDEventModel taEvent, string appId)
|
|
{
|
|
if (null == taEvent || null == taEvent.EventType)
|
|
{
|
|
if(TDLog.GetEnable()) TDLog.w("Ignoring invalid TA event");
|
|
return;
|
|
}
|
|
|
|
if (taEvent.GetEventTime() == null)
|
|
{
|
|
if(TDLog.GetEnable()) TDLog.w("ppp null...");
|
|
}
|
|
TDPropertiesChecker.CheckString(taEvent.EventName);
|
|
TDPropertiesChecker.CheckProperties(taEvent.Properties);
|
|
track(taEvent, appId);
|
|
}
|
|
|
|
public static void QuickTrack(string eventName, Dictionary<string, object> properties, string appId)
|
|
{
|
|
if ("SceneView" == eventName)
|
|
{
|
|
if (properties == null)
|
|
{
|
|
properties = new Dictionary<string, object>() { };
|
|
}
|
|
Scene scene = SceneManager.GetActiveScene();
|
|
if (scene != null)
|
|
{
|
|
properties.Add("#scene_name", scene.name);
|
|
properties.Add("#scene_path", scene.path);
|
|
}
|
|
Track("ta_scene_view", properties, appId);
|
|
}
|
|
else if ("AppClick" == eventName)
|
|
{
|
|
if (properties == null)
|
|
{
|
|
properties = new Dictionary<string, object>() { };
|
|
}
|
|
Track("ta_app_click", properties, appId);
|
|
}
|
|
}
|
|
|
|
public static void SetSuperProperties(Dictionary<string, object> superProperties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(superProperties);
|
|
setSuperProperties(superProperties, appId);
|
|
}
|
|
|
|
public static void SetSuperProperties(string superProperties, string appId)
|
|
{
|
|
setSuperProperties(superProperties, appId);
|
|
}
|
|
|
|
public static void UnsetSuperProperty(string superPropertyName, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckString(superPropertyName);
|
|
unsetSuperProperty(superPropertyName, appId);
|
|
}
|
|
|
|
public static void ClearSuperProperty(string appId)
|
|
{
|
|
clearSuperProperty(appId);
|
|
}
|
|
|
|
|
|
public static void TimeEvent(string eventName, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
timeEvent(eventName, appId);
|
|
}
|
|
|
|
public static void TimeEventForAll(string eventName)
|
|
{
|
|
TDPropertiesChecker.CheckString(eventName);
|
|
timeEventForAll(eventName);
|
|
}
|
|
|
|
public static Dictionary<string, object> GetSuperProperties(string appId)
|
|
{
|
|
return getSuperProperties(appId);
|
|
}
|
|
|
|
public static Dictionary<string, object> GetPresetProperties(string appId)
|
|
{
|
|
return getPresetProperties(appId);
|
|
}
|
|
|
|
public static void UserSet(Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userSet(properties, appId);
|
|
}
|
|
|
|
public static void UserSet(string properties, string appId)
|
|
{
|
|
userSet(properties, appId);
|
|
}
|
|
|
|
public static void UserSet(Dictionary<string, object> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userSet(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserSetOnce(Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userSetOnce(properties, appId);
|
|
}
|
|
|
|
public static void UserSetOnce(string properties, string appId)
|
|
{
|
|
userSetOnce(properties, appId);
|
|
}
|
|
|
|
public static void UserSetOnce(Dictionary<string, object> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userSetOnce(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserUnset(List<string> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userUnset(properties, appId);
|
|
}
|
|
|
|
public static void UserUnset(List<string> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userUnset(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserAdd(Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userAdd(properties, appId);
|
|
}
|
|
|
|
public static void UserAddStr(string properties, string appId)
|
|
{
|
|
userAddStr(properties, appId);
|
|
}
|
|
|
|
public static void UserAdd(Dictionary<string, object> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userAdd(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserAppend(Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userAppend(properties, appId);
|
|
}
|
|
|
|
public static void UserAppend(string properties, string appId)
|
|
{
|
|
userAppend(properties, appId);
|
|
}
|
|
|
|
public static void UserAppend(Dictionary<string, object> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userAppend(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserUniqAppend(Dictionary<string, object> properties, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userUniqAppend(properties, appId);
|
|
}
|
|
|
|
public static void UserUniqAppend(string properties, string appId)
|
|
{
|
|
userUniqAppend(properties, appId);
|
|
}
|
|
|
|
public static void UserUniqAppend(Dictionary<string, object> properties, DateTime dateTime, string appId)
|
|
{
|
|
TDPropertiesChecker.CheckProperties(properties);
|
|
userUniqAppend(properties, dateTime, appId);
|
|
}
|
|
|
|
public static void UserDelete(string appId)
|
|
{
|
|
userDelete(appId);
|
|
}
|
|
|
|
public static void UserDelete(DateTime dateTime, string appId)
|
|
{
|
|
userDelete(dateTime, appId);
|
|
}
|
|
|
|
public static void Flush(string appId)
|
|
{
|
|
flush(appId);
|
|
}
|
|
|
|
public static void SetNetworkType(TDNetworkType networkType)
|
|
{
|
|
setNetworkType(networkType);
|
|
}
|
|
|
|
public static string GetDeviceId()
|
|
{
|
|
return getDeviceId();
|
|
}
|
|
|
|
public static void SetDynamicSuperProperties(TDDynamicSuperPropertiesHandler dynamicSuperProperties, string appId)
|
|
{
|
|
if (!TDPropertiesChecker.CheckProperties(dynamicSuperProperties.GetDynamicSuperProperties()))
|
|
{
|
|
if(TDLog.GetEnable()) TDLog.d("Cannot set dynamic super properties due to invalid properties.");
|
|
}
|
|
mDynamicSuperProperties = dynamicSuperProperties;
|
|
setDynamicSuperProperties(dynamicSuperProperties, appId);
|
|
}
|
|
|
|
public static void SetTrackStatus(TDTrackStatus status, string appId)
|
|
{
|
|
setTrackStatus(status, appId);
|
|
}
|
|
|
|
public static void OptOutTracking(string appId)
|
|
{
|
|
optOutTracking(appId);
|
|
}
|
|
|
|
public static void OptOutTrackingAndDeleteUser(string appId)
|
|
{
|
|
optOutTrackingAndDeleteUser(appId);
|
|
}
|
|
|
|
public static void OptInTracking(string appId)
|
|
{
|
|
optInTracking(appId);
|
|
}
|
|
|
|
public static void EnableTracking(bool enabled, string appId)
|
|
{
|
|
enableTracking(enabled, appId);
|
|
}
|
|
|
|
public static string CreateLightInstance()
|
|
{
|
|
return createLightInstance();
|
|
}
|
|
|
|
public static void CalibrateTime(long timestamp)
|
|
{
|
|
calibrateTime(timestamp);
|
|
}
|
|
|
|
public static void CalibrateTimeWithNtp(string ntpServer)
|
|
{
|
|
calibrateTimeWithNtp(ntpServer);
|
|
}
|
|
|
|
public static void EnableThirdPartySharing(TDThirdPartyType shareType, Dictionary<string, object> properties = null, string appId = "")
|
|
{
|
|
if (null == properties) properties = new Dictionary<string, object>();
|
|
enableThirdPartySharing(shareType, properties, appId);
|
|
}
|
|
}
|
|
}
|
|
|