using System; using System.Collections; using System.Collections.Generic; using ThinkingSDK.PC.Config; using ThinkingSDK.PC.Constant; using ThinkingSDK.PC.DataModel; using ThinkingSDK.PC.Storage; using ThinkingSDK.PC.Time; using ThinkingSDK.PC.Utils; namespace ThinkingSDK.PC.Main { public class ThinkingPCSDK { private ThinkingPCSDK() { } private static readonly Dictionary Instances = new Dictionary(); private static string CurrentAppid; private static ThinkingSDKInstance GetInstance(string appid) { ThinkingSDKInstance instance; if (string.IsNullOrEmpty(appid)) { //ThinkingSDKLogger.Print("current appid is " + CurrentAppid); instance = Instances[CurrentAppid]; } else { instance = Instances[appid]; } return instance; } public static ThinkingSDKInstance CurrentInstance() { ThinkingSDKInstance instance = Instances[CurrentAppid]; return instance; } public static ThinkingSDKInstance Init(string appid, string server, ThinkingSDKConfig config = null) { if (ThinkingSDKUtil.IsEmptyString(appid)) { ThinkingSDKLogger.Print("appid is empty"); return null; } ThinkingSDKInstance instance = null; if (Instances.ContainsKey(appid)) { instance = Instances[appid]; } if (instance == null) { instance = new ThinkingSDKInstance(appid,server,config); if (string.IsNullOrEmpty(CurrentAppid)) { CurrentAppid = appid; } Instances[appid] = instance; } return instance; } /// /// 设置访客ID /// /// /// public static void Identifiy(string distinctID, string appid ="") { GetInstance(appid).Identifiy(distinctID); } /// /// 获取访客ID /// /// /// public static string DistinctId(string appid = "") { return GetInstance(appid).DistinctId(); } /// /// 设置账号ID /// /// /// public static void Login(string accountID,string appid = "") { GetInstance(appid).Login(accountID); } /// /// 获取账号ID /// /// /// public static string AccountID(string appid = "") { return GetInstance(appid).AccountID(); } /// ///清空账号ID /// public static void Logout(string appid = "") { GetInstance(appid).Logout(); } /// /// 设置自动采集事件 /// /// /// public static void EnableAutoTrack(AUTO_TRACK_EVENTS events,string appid = "") { GetInstance(appid).EnableAutoTrack(events); } public static void Track(string eventName,string appid = "") { GetInstance(appid).Track(eventName); } public static void Track(string eventName, Dictionary properties, string appid = "") { GetInstance(appid).Track(eventName,properties); } public static void Track(string eventName, Dictionary properties, DateTime date, string appid = "") { GetInstance(appid).Track(eventName, properties, date); } public static void Track(ThinkingSDKEventData analyticsEvent,string appid = "") { GetInstance(appid).Track(analyticsEvent); } public static void SetSuperProperties(Dictionary superProperties,string appid = "") { GetInstance(appid).SetSuperProperties(superProperties); } public static void UnsetSuperProperty(string propertyKey, string appid = "") { GetInstance(appid).UnsetSuperProperty(propertyKey); } public static Dictionary SuperProperties(string appid="") { return GetInstance(appid).SuperProperties(); } public static Dictionary 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 UserSet(Dictionary properties, string appid = "") { GetInstance(appid).UserSet(properties); } public static void UserSet(Dictionary 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 propertyKeys, string appid = "") { GetInstance(appid).UserUnset(propertyKeys); } public static void UserUnset(List propertyKeys, DateTime dateTime, string appid = "") { GetInstance(appid).UserUnset(propertyKeys,dateTime); } public static void UserSetOnce(Dictionary properties,string appid = "") { GetInstance(appid).UserSetOnce(properties); } public static void UserSetOnce(Dictionary properties, DateTime dateTime, string appid = "") { GetInstance(appid).UserSetOnce(properties,dateTime); } public static void UserAdd(Dictionary properties, string appid = "") { GetInstance(appid).UserAdd(properties); } public static void UserAdd(Dictionary properties, DateTime dateTime, string appid = "") { GetInstance(appid).UserAdd(properties,dateTime); } public static void UserAppend(Dictionary properties, string appid = "") { GetInstance(appid).UserAppend(properties); } public static void UserAppend(Dictionary properties, DateTime dateTime, string appid = "") { GetInstance(appid).UserAppend(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(IDynamicSuperProperties dynamicSuperProperties, string appid = "") { GetInstance(appid).SetDynamicSuperProperties(dynamicSuperProperties); } /* 停止或开启数据上报,默认是开启状态,设置为停止时还会清空本地的访客ID,账号ID,静态公共属性 其中true表示可以上报数据,false表示停止数据上报 **/ public static void OptTracking(bool optTracking,string appid = "") { GetInstance(appid).OptTracking(optTracking); } //是否暂停数据上报,默认是正常上报状态,其中true表示可以上报数据,false表示暂停数据上报 public static void EnableTracking(bool isEnable, string appid = "") { GetInstance(appid).EnableTracking(isEnable); } //停止数据上报 public static void OptTrackingAndDeleteUser(string appid = "") { GetInstance(appid).OptTrackingAndDeleteUser(); } /// /// 通过时间戳校准时间 /// /// public static void CalibrateTime(long timestamp) { ThinkingSDKTimestampCalibration timestampCalibration = new ThinkingSDKTimestampCalibration(timestamp); foreach (KeyValuePair kv in Instances) { kv.Value.SetTimeCalibratieton(timestampCalibration); } } /// /// 通过NTP服务器校准时间 /// /// public static void CalibrateTimeWithNtp(string ntpServer) { } /// /// 获取设备ID /// /// 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); } } }