363 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			363 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using ThinkingSDK.PC.Config; | |||
|  | using ThinkingSDK.PC.DataModel; | |||
|  | using ThinkingSDK.PC.Time; | |||
|  | using ThinkingSDK.PC.Utils; | |||
|  | using UnityEngine; | |||
|  | namespace ThinkingSDK.PC.Main | |||
|  | { | |||
|  |     public class ThinkingPCSDK | |||
|  |     { | |||
|  |         private ThinkingPCSDK() | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  |         private static readonly Dictionary<string, ThinkingSDKInstance> Instances = new Dictionary<string, ThinkingSDKInstance>(); | |||
|  |         private static readonly Dictionary<string, ThinkingSDKInstance> LightInstances = new Dictionary<string, ThinkingSDKInstance>(); | |||
|  |         private static string CurrentAppid; | |||
|  | 
 | |||
|  |         private static ThinkingSDKInstance GetInstance(string appId) | |||
|  |         { | |||
|  |             ThinkingSDKInstance instance = null; | |||
|  |             if (!string.IsNullOrEmpty(appId)) | |||
|  |             { | |||
|  |                 appId = appId.Replace(" ", ""); | |||
|  |                 if (LightInstances.ContainsKey(appId)) | |||
|  |                 { | |||
|  |                     instance = LightInstances[appId]; | |||
|  |                 } | |||
|  |                 else if (Instances.ContainsKey(appId)) | |||
|  |                 { | |||
|  |                     instance = Instances[appId]; | |||
|  |                 } | |||
|  |             } | |||
|  |             if (instance == null) | |||
|  |             { | |||
|  |                 instance = Instances[CurrentAppid]; | |||
|  |             } | |||
|  |             return instance; | |||
|  |         } | |||
|  | 
 | |||
|  |         public static ThinkingSDKInstance CurrentInstance() | |||
|  |         { | |||
|  |             ThinkingSDKInstance instance = Instances[CurrentAppid]; | |||
|  |             return instance; | |||
|  |         } | |||
|  | 
 | |||
|  |         public static ThinkingSDKInstance Init(string appId, string server, string instanceName, ThinkingSDKConfig config = null, MonoBehaviour mono = null) | |||
|  |         { | |||
|  |             if (ThinkingSDKUtil.IsEmptyString(appId)) | |||
|  |             { | |||
|  |                 if (ThinkingSDKPublicConfig.IsPrintLog()) ThinkingSDKLogger.Print("appId is empty"); | |||
|  |                 return null; | |||
|  |             } | |||
|  |             ThinkingSDKInstance instance = null; | |||
|  |             if (!string.IsNullOrEmpty(instanceName)) | |||
|  |             { | |||
|  |                 if (Instances.ContainsKey(instanceName)) | |||
|  |                 { | |||
|  |                     instance = Instances[instanceName]; | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     instance = new ThinkingSDKInstance(appId, server, instanceName, config, mono); | |||
|  |                     if (string.IsNullOrEmpty(CurrentAppid)) | |||
|  |                     { | |||
|  |                         CurrentAppid = instanceName; | |||
|  |                     } | |||
|  |                     Instances[instanceName] = instance; | |||
|  |                 } | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 if (Instances.ContainsKey(appId)) | |||
|  |                 { | |||
|  |                     instance = Instances[appId]; | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     instance = new ThinkingSDKInstance(appId, server, null, config, mono); | |||
|  |                     if (string.IsNullOrEmpty(CurrentAppid)) | |||
|  |                     { | |||
|  |                         CurrentAppid = appId; | |||
|  |                     } | |||
|  |                     Instances[appId] = instance; | |||
|  |                 } | |||
|  |             } | |||
|  |             return instance; | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// Sets distinct ID | |||
|  |         /// </summary> | |||
|  |         /// <param name="distinctID"></param> | |||
|  |         /// <param name="appId"></param> | |||
|  |         public static void Identifiy(string distinctID, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Identifiy(distinctID); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// Gets distinct ID | |||
|  |         /// </summary> | |||
|  |         /// <param name="appId"></param> | |||
|  |         /// <returns></returns> | |||
|  |         public static string DistinctId(string appId = "") | |||
|  |         { | |||
|  |             return GetInstance(appId).DistinctId(); | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// Sets account ID | |||
|  |         /// </summary> | |||
|  |         /// <param name="accountID"></param> | |||
|  |         /// <param name="appId"></param> | |||
|  |         public static void Login(string accountID,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Login(accountID); | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// Gets account ID | |||
|  |         /// </summary> | |||
|  |         /// <param name="appId"></param> | |||
|  |         /// <returns></returns> | |||
|  |         public static string AccountID(string appId = "") | |||
|  |         { | |||
|  |             return GetInstance(appId).AccountID(); | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// Clear account ID | |||
|  |         /// </summary> | |||
|  |         public static void Logout(string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Logout(); | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// Enable Auto-tracking Events | |||
|  |         /// </summary> | |||
|  |         /// <param name="events"></param> | |||
|  |         /// <param name="appId"></param> | |||
|  |         public static void EnableAutoTrack(TDAutoTrackEventType events, Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).EnableAutoTrack(events, properties); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void EnableAutoTrack(TDAutoTrackEventType events, TDAutoTrackEventHandler_PC eventCallback, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).EnableAutoTrack(events, eventCallback); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void SetAutoTrackProperties(TDAutoTrackEventType events, Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).SetAutoTrackProperties(events, properties); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void Track(string eventName,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Track(eventName); | |||
|  |         } | |||
|  |         public static void Track(string eventName, Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Track(eventName,properties); | |||
|  |         } | |||
|  |         public static void Track(string eventName, Dictionary<string, object> properties, DateTime date, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Track(eventName, properties, date); | |||
|  |         } | |||
|  |         public static void Track(string eventName, Dictionary<string, object> properties, DateTime date, TimeZoneInfo timeZone, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Track(eventName, properties, date, timeZone); | |||
|  |         } | |||
|  |         public static void TrackForAll(string eventName, Dictionary<string, object> properties) | |||
|  |         { | |||
|  |             foreach (string appId in Instances.Keys) | |||
|  |             { | |||
|  |                 GetInstance(appId).Track(eventName, properties); | |||
|  |             } | |||
|  |         } | |||
|  |         public static void Track(ThinkingSDKEventData eventModel,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Track(eventModel); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void Flush (string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).Flush(); | |||
|  |         } | |||
|  |         //public static void FlushImmediately (string appId = "") | |||
|  |         //{ | |||
|  |         //    GetInstance(appId).FlushImmediately(); | |||
|  |         //} | |||
|  |         public static void SetSuperProperties(Dictionary<string, object> superProperties,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).SetSuperProperties(superProperties); | |||
|  |         } | |||
|  |         public static void UnsetSuperProperty(string propertyKey, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UnsetSuperProperty(propertyKey); | |||
|  |         } | |||
|  |         public static Dictionary<string, object> SuperProperties(string appId="") | |||
|  |         { | |||
|  |            return GetInstance(appId).SuperProperties(); | |||
|  |         } | |||
|  |          | |||
|  |         public static Dictionary<string, object> PresetProperties(string appId="") | |||
|  |         { | |||
|  |             return GetInstance(appId).PresetProperties(); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void ClearSuperProperties(string appId= "") | |||
|  |         { | |||
|  |             GetInstance(appId).ClearSuperProperties(); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void TimeEvent(string eventName,string appId="") | |||
|  |         { | |||
|  |             GetInstance(appId).TimeEvent(eventName); | |||
|  |         } | |||
|  |         public static void TimeEventForAll(string eventName) | |||
|  |         { | |||
|  |             foreach (string appId in Instances.Keys) | |||
|  |             { | |||
|  |                 GetInstance(appId).TimeEvent(eventName); | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary> | |||
|  |         /// Pause Event timing | |||
|  |         /// </summary> | |||
|  |         /// <param name="status">ture: puase timing, false: resume timing</param> | |||
|  |         /// <param name="eventName">event name (null or empty is for all event)</param> | |||
|  |         public static void PauseTimeEvent(bool status, string eventName = "", string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).PauseTimeEvent(status, eventName); | |||
|  |         } | |||
|  |         public static void UserSet(Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserSet(properties); | |||
|  |         } | |||
|  |         public static void UserSet(Dictionary<string, object> properties, DateTime dateTime,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserSet(properties, dateTime); | |||
|  |         } | |||
|  |         public static void UserUnset(string propertyKey,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUnset(propertyKey); | |||
|  |         } | |||
|  |         public static void UserUnset(string propertyKey, DateTime dateTime,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUnset(propertyKey,dateTime); | |||
|  |         } | |||
|  |         public static void UserUnset(List<string> propertyKeys, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUnset(propertyKeys); | |||
|  |         } | |||
|  |         public static void UserUnset(List<string> propertyKeys, DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUnset(propertyKeys,dateTime); | |||
|  |         } | |||
|  |         public static void UserSetOnce(Dictionary<string, object> properties,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserSetOnce(properties); | |||
|  |         } | |||
|  |         public static void UserSetOnce(Dictionary<string, object> properties, DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserSetOnce(properties,dateTime); | |||
|  |         } | |||
|  |         public static void UserAdd(Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserAdd(properties); | |||
|  |         } | |||
|  |         public static void UserAdd(Dictionary<string, object> properties, DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserAdd(properties,dateTime); | |||
|  |         } | |||
|  |         public static void UserAppend(Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserAppend(properties); | |||
|  |         } | |||
|  |         public static void UserAppend(Dictionary<string, object> properties, DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserAppend(properties,dateTime); | |||
|  |         } | |||
|  |         public static void UserUniqAppend(Dictionary<string, object> properties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUniqAppend(properties); | |||
|  |         } | |||
|  |         public static void UserUniqAppend(Dictionary<string, object> properties, DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserUniqAppend(properties,dateTime); | |||
|  |         } | |||
|  |         public static void UserDelete(string appId="") | |||
|  |         { | |||
|  |             GetInstance(appId).UserDelete(); | |||
|  |         } | |||
|  |         public static void UserDelete(DateTime dateTime,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).UserDelete(dateTime); | |||
|  |         } | |||
|  |         public static void SetDynamicSuperProperties(TDDynamicSuperPropertiesHandler_PC dynamicSuperProperties, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).SetDynamicSuperProperties(dynamicSuperProperties); | |||
|  |         } | |||
|  |         public static void SetTrackStatus(TDTrackStatus status, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).SetTrackStatus(status); | |||
|  |         } | |||
|  |         public static void OptTracking(bool optTracking,string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).OptTracking(optTracking); | |||
|  |         } | |||
|  |         public static void EnableTracking(bool isEnable, string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).EnableTracking(isEnable); | |||
|  |         } | |||
|  |         public static void OptTrackingAndDeleteUser(string appId = "") | |||
|  |         { | |||
|  |             GetInstance(appId).OptTrackingAndDeleteUser(); | |||
|  |         } | |||
|  |         public static string CreateLightInstance() | |||
|  |         { | |||
|  |             string randomID = System.Guid.NewGuid().ToString("N"); | |||
|  |             ThinkingSDKInstance lightInstance = ThinkingSDKInstance.CreateLightInstance(); | |||
|  |             LightInstances[randomID] = lightInstance; | |||
|  |             return randomID; | |||
|  |         } | |||
|  |         public static void CalibrateTime(long timestamp) | |||
|  |         { | |||
|  |             ThinkingSDKTimestampCalibration timestampCalibration = new ThinkingSDKTimestampCalibration(timestamp); | |||
|  |             ThinkingSDKInstance.SetTimeCalibratieton(timestampCalibration); | |||
|  |         } | |||
|  |         public static void CalibrateTimeWithNtp(string ntpServer) | |||
|  |         { | |||
|  |             ThinkingSDKNTPCalibration ntpCalibration = new ThinkingSDKNTPCalibration(ntpServer); | |||
|  |             ThinkingSDKInstance.SetNtpTimeCalibratieton(ntpCalibration); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void OnDestory() { | |||
|  |             Instances.Clear(); | |||
|  |             LightInstances.Clear(); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static string GetDeviceId() | |||
|  |         { | |||
|  |             return ThinkingSDKDeviceInfo.DeviceID(); | |||
|  |         } | |||
|  |         public static void EnableLog(bool isEnable) | |||
|  |         { | |||
|  |             ThinkingSDKPublicConfig.SetIsPrintLog(isEnable); | |||
|  |         } | |||
|  |         public static void SetLibName(string name) | |||
|  |         { | |||
|  |             ThinkingSDKPublicConfig.SetName(name); | |||
|  |         } | |||
|  |         public static void SetLibVersion(string versionCode) | |||
|  |         { | |||
|  |             ThinkingSDKPublicConfig.SetVersion(versionCode); | |||
|  |         } | |||
|  |         public static string TimeString(DateTime dateTime, string appId = "") | |||
|  |         { | |||
|  |             return GetInstance(appId).TimeString(dateTime); | |||
|  |         } | |||
|  |     } | |||
|  | } |