214 lines
8.9 KiB
C#
214 lines
8.9 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using ThinkingSDK.PC.Main;
|
|
using ThinkingSDK.PC.Storage;
|
|
using ThinkingSDK.PC.Utils;
|
|
using ThinkingSDK.PC.Constant;
|
|
public class ThinkingSDKAutoTrack : MonoBehaviour
|
|
{
|
|
private string mAppId;
|
|
private TDAutoTrackEventType mAutoTrackEvents = TDAutoTrackEventType.None;
|
|
private Dictionary<string, Dictionary<string, object>> mAutoTrackProperties = new Dictionary<string, Dictionary<string, object>>();
|
|
private bool mStarted = false;
|
|
private TDAutoTrackEventHandler_PC mEventCallback_PC;
|
|
|
|
private static string TDAutoTrackEventType_APP_START = "AppStart";
|
|
private static string TDAutoTrackEventType_APP_END = "AppEnd";
|
|
private static string TDAutoTrackEventType_APP_CRASH = "AppCrash";
|
|
private static string TDAutoTrackEventType_APP_INSTALL = "AppInstall";
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
}
|
|
void OnApplicationFocus(bool hasFocus)
|
|
{
|
|
if (hasFocus)
|
|
{
|
|
if ((mAutoTrackEvents & TDAutoTrackEventType.AppStart) != 0)
|
|
{
|
|
Dictionary<string, object> properties = new Dictionary<string, object>();
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_START))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mAutoTrackProperties[TDAutoTrackEventType_APP_START]);
|
|
}
|
|
if (mEventCallback_PC != null)
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mEventCallback_PC.AutoTrackEventCallback_PC((int) TDAutoTrackEventType.AppStart, properties));
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.START_EVENT, properties, this.mAppId);
|
|
}
|
|
if ((mAutoTrackEvents & TDAutoTrackEventType.AppEnd) != 0)
|
|
{
|
|
ThinkingPCSDK.TimeEvent(ThinkingSDKConstant.END_EVENT, this.mAppId);
|
|
}
|
|
|
|
ThinkingPCSDK.PauseTimeEvent(false, appId: this.mAppId);
|
|
}
|
|
else
|
|
{
|
|
if ((mAutoTrackEvents & TDAutoTrackEventType.AppEnd) != 0)
|
|
{
|
|
Dictionary<string, object> properties = new Dictionary<string, object>();
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_END))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mAutoTrackProperties[TDAutoTrackEventType_APP_END]);
|
|
}
|
|
if (mEventCallback_PC != null)
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mEventCallback_PC.AutoTrackEventCallback_PC((int) TDAutoTrackEventType.AppEnd, properties));
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.END_EVENT, properties, this.mAppId);
|
|
}
|
|
ThinkingPCSDK.Flush(this.mAppId);
|
|
|
|
ThinkingPCSDK.PauseTimeEvent(true, appId: this.mAppId);
|
|
}
|
|
}
|
|
|
|
void OnApplicationQuit()
|
|
{
|
|
if (Application.isFocused == true)
|
|
{
|
|
OnApplicationFocus(false);
|
|
}
|
|
//ThinkingPCSDK.FlushImmediately(this.mAppId);
|
|
}
|
|
|
|
public void SetAppId(string appId)
|
|
{
|
|
this.mAppId = appId;
|
|
}
|
|
|
|
public void EnableAutoTrack(TDAutoTrackEventType events, Dictionary<string, object> properties, string appId)
|
|
{
|
|
SetAutoTrackProperties(events, properties);
|
|
if ((events & TDAutoTrackEventType.AppInstall) != 0)
|
|
{
|
|
object result = ThinkingSDKFile.GetData(appId, ThinkingSDKConstant.IS_INSTALL, typeof(int));
|
|
if (result == null)
|
|
{
|
|
Dictionary<string, object> mProperties = new Dictionary<string, object>(properties);
|
|
ThinkingSDKFile.SaveData(appId, ThinkingSDKConstant.IS_INSTALL, 1);
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_INSTALL))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mProperties, mAutoTrackProperties[TDAutoTrackEventType_APP_INSTALL]);
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.INSTALL_EVENT, mProperties, this.mAppId);
|
|
ThinkingPCSDK.Flush(this.mAppId);
|
|
}
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppStart) != 0 && mStarted == false)
|
|
{
|
|
Dictionary<string, object> mProperties = new Dictionary<string, object>(properties);
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_START))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mProperties, mAutoTrackProperties[TDAutoTrackEventType_APP_START]);
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.START_EVENT, mProperties, this.mAppId);
|
|
ThinkingPCSDK.Flush(this.mAppId);
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppEnd) != 0 && mStarted == false)
|
|
{
|
|
ThinkingPCSDK.TimeEvent(ThinkingSDKConstant.END_EVENT, this.mAppId);
|
|
}
|
|
|
|
mStarted = true;
|
|
}
|
|
|
|
public void EnableAutoTrack(TDAutoTrackEventType events, TDAutoTrackEventHandler_PC eventCallback, string appId)
|
|
{
|
|
mAutoTrackEvents = events;
|
|
mEventCallback_PC = eventCallback;
|
|
if ((events & TDAutoTrackEventType.AppInstall) != 0)
|
|
{
|
|
object result = ThinkingSDKFile.GetData(appId, ThinkingSDKConstant.IS_INSTALL, typeof(int));
|
|
if (result == null)
|
|
{
|
|
ThinkingSDKFile.SaveData(appId, ThinkingSDKConstant.IS_INSTALL, 1);
|
|
Dictionary<string, object> properties = null;
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_INSTALL))
|
|
{
|
|
properties = mAutoTrackProperties[TDAutoTrackEventType_APP_INSTALL];
|
|
}
|
|
else
|
|
{
|
|
properties = new Dictionary<string, object>();
|
|
}
|
|
if (mEventCallback_PC != null)
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mEventCallback_PC.AutoTrackEventCallback_PC((int)TDAutoTrackEventType.AppInstall, properties));
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.INSTALL_EVENT, properties, this.mAppId);
|
|
ThinkingPCSDK.Flush(this.mAppId);
|
|
}
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppStart) != 0 && mStarted == false)
|
|
{
|
|
Dictionary<string, object> properties = null;
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_START))
|
|
{
|
|
properties = mAutoTrackProperties[TDAutoTrackEventType_APP_START];
|
|
}
|
|
else
|
|
{
|
|
properties = new Dictionary<string, object>();
|
|
}
|
|
if (mEventCallback_PC != null)
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(properties, mEventCallback_PC.AutoTrackEventCallback_PC((int) TDAutoTrackEventType.AppStart, properties));
|
|
}
|
|
ThinkingPCSDK.Track(ThinkingSDKConstant.START_EVENT, properties, this.mAppId);
|
|
ThinkingPCSDK.Flush(this.mAppId);
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppEnd) != 0 && mStarted == false)
|
|
{
|
|
ThinkingPCSDK.TimeEvent(ThinkingSDKConstant.END_EVENT, this.mAppId);
|
|
}
|
|
|
|
mStarted = true;
|
|
}
|
|
|
|
public void SetAutoTrackProperties(TDAutoTrackEventType events, Dictionary<string, object> properties)
|
|
{
|
|
mAutoTrackEvents = events;
|
|
if ((events & TDAutoTrackEventType.AppInstall) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_INSTALL))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_INSTALL], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_INSTALL] = properties;
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppStart) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_START))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_START], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_START] = properties;
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppEnd) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_END))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_END], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_END] = properties;
|
|
}
|
|
if ((events & TDAutoTrackEventType.AppCrash) != 0)
|
|
{
|
|
if (mAutoTrackProperties.ContainsKey(TDAutoTrackEventType_APP_CRASH))
|
|
{
|
|
ThinkingSDKUtil.AddDictionary(mAutoTrackProperties[TDAutoTrackEventType_APP_CRASH], properties);
|
|
}
|
|
else
|
|
mAutoTrackProperties[TDAutoTrackEventType_APP_CRASH] = properties;
|
|
}
|
|
}
|
|
|
|
}
|