295 lines
10 KiB
C#
295 lines
10 KiB
C#
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<string, ThinkingSDKInstance> Instances = new Dictionary<string, ThinkingSDKInstance>();
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 设置访客ID
|
|
/// </summary>
|
|
/// <param name="distinctID"></param>
|
|
/// <param name="appid"></param>
|
|
public static void Identifiy(string distinctID, string appid ="")
|
|
{
|
|
GetInstance(appid).Identifiy(distinctID);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取访客ID
|
|
/// </summary>
|
|
/// <param name="appid"></param>
|
|
/// <returns></returns>
|
|
public static string DistinctId(string appid = "")
|
|
{
|
|
return GetInstance(appid).DistinctId();
|
|
}
|
|
/// <summary>
|
|
/// 设置账号ID
|
|
/// </summary>
|
|
/// <param name="accountID"></param>
|
|
/// <param name="appid"></param>
|
|
public static void Login(string accountID,string appid = "")
|
|
{
|
|
GetInstance(appid).Login(accountID);
|
|
}
|
|
/// <summary>
|
|
/// 获取账号ID
|
|
/// </summary>
|
|
/// <param name="appid"></param>
|
|
/// <returns></returns>
|
|
public static string AccountID(string appid = "")
|
|
{
|
|
return GetInstance(appid).AccountID();
|
|
}
|
|
/// <summary>
|
|
///清空账号ID
|
|
/// </summary>
|
|
public static void Logout(string appid = "")
|
|
{
|
|
GetInstance(appid).Logout();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置自动采集事件
|
|
/// </summary>
|
|
/// <param name="events"></param>
|
|
/// <param name="appid"></param>
|
|
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<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(ThinkingSDKEventData analyticsEvent,string appid = "")
|
|
{
|
|
GetInstance(appid).Track(analyticsEvent);
|
|
}
|
|
|
|
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 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 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();
|
|
}
|
|
/// <summary>
|
|
/// 通过时间戳校准时间
|
|
/// </summary>
|
|
/// <param name="timestamp"></param>
|
|
public static void CalibrateTime(long timestamp)
|
|
{
|
|
ThinkingSDKTimestampCalibration timestampCalibration = new ThinkingSDKTimestampCalibration(timestamp);
|
|
foreach (KeyValuePair<string, ThinkingSDKInstance> kv in Instances)
|
|
{
|
|
kv.Value.SetTimeCalibratieton(timestampCalibration);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 通过NTP服务器校准时间
|
|
/// </summary>
|
|
/// <param name="ntpServer"></param>
|
|
public static void CalibrateTimeWithNtp(string ntpServer)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取设备ID
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static string GetDeviceId()
|
|
{
|
|
return ThinkingSDKDeviceInfo.DeviceID();
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// 是否打开客户端日志
|
|
/// </summary>
|
|
/// <param name="isEnable"></param>
|
|
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);
|
|
}
|
|
}
|
|
}
|