1. 设置用户 ID

在使用 SDK 时,SDK 默认会使用设备 ID 作为每个用户的匿名 ID,该 ID 将会作为用户在未登录状态下身份标识 ID。

提示

  • Android:SDK 默认使用 AndroidId 作为设备 ID,如果 AndroidId 获取不到则获取随机的 UUID;
  • iOS:如果 App 引入了 AdSupport 库,SDK 会使用 IDFA 作为匿名 ID。如果使用 IDFV 或 UUID ,当用户卸载重装 App 时设备 ID 会变。也可以通过配置使用 IDFA(例如:1E2DFA89-496A-47FD-9941-DF1FC4E6484A),如果开启 IDFA ,神策 SDK 会优先获取 IDFA,如果获取失败再尝试获取 IDFV。使用 IDFA 能避免用户在重装 App 后设备 ID 发生变化的情况。

1.1. 用户登录

当用户注册成功或登录成功时,需要调用 SDK 的 Login 方法:

using SensorsAnalytics;

try
{
	SensorsDataAPI.Login("登录 ID");
}
catch (Exception ex)
{
	//handle exception
}
C#

为了准确记录登录用户的行为信息,建议在以下时机各调用一次 Login  方法:

  • 用户在注册成功时
  • 用户登录成功时

1.2. 设置自定义匿名 ID (可选)

如果您的游戏对每个用户有自己的匿名 ID 管理体系,则您可以调用 Identify 来设置访客 ID:

using SensorsAnalytics;

try
{
	
	SensorsDataAPI.Identify("匿名 ID");
}
catch (Exception ex)
{
	//handle exception
}
C#

2. 事件采集

2.1. 记录激活事件

可以调用 - trackAppInstallWithProperties:  方法记录激活事件  $AppInstall,多次调用此方法只会在第一次调用时触发激活事件:

// 激活事件,可以添加自定义属性
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("DownloadChannel", "游戏下载渠道");
SensorsDataAPI.TrackAppInstall(dictionary);
CODE

2.2. 设置事件公共属性

对于所有事件都需要添加的属性,初始化 SDK 后,可以通过 RegisterSuperProperties 将属性注册为公共属性:

using SensorsAnalytics;

try
{
	Dictionary<string, object> properties = new Dictionary<string, object>();
	// 将应用名称作为事件公共属性,后续所有 Track() 追踪的事件都会自动带上 "AppName" 属性
	properties.Add("AppName", "Dota 传奇");
	SensorsDataAPI.RegisterSuperProperties(properties);
}
catch (Exception ex)
{
	//handle exception
}
C#

2.3. 事件时长

可以通过计时器统计事件的持续时间。首先,TrackTimerStart("EventName") ,该方法并不会真正发送事件;在事件结束时,调用 TrackTimerEnd("EventName", properties),SDK 会触发 "Event" 事件,并自动将事件持续时间记录在事件属性 "$event_duration" 中。在事件开始后你可以使用 TrackTimerPause("EventName") 来暂停事件计时,然后通过 TrackTimerResume("EventName") 来恢复事件计时。例如记录用户浏览商品页面的时间:

using SensorsAnalytics;

try
{
	// 进入商品页面
	// 调用 TrackTimerStart("ViewProduct") 标记事件启动时间
	SensorsDataAPI.TrackTimerStart("ViewProduct");

	// ... 用户浏览商品

	// 离开商品页
	Dictionary<string, object> properties = new Dictionary<string, object>();
	// 在属性中记录商品 ID
	properties.Add("country", "中国");
	// 计时结束,触发 ViewProduct 事件
	SensorsDataAPI.TrackTimerEnd("ViewProduct", properties);
}
catch (Exception ex)
{
	//handle exception
}
C#

2.4. 同名事件交叉的时长统计

默认情况下,时长的统计以事件名作为标识,相同的事件名会自动匹配 start-end,如果两个同名事件在时间上有交叉部分,会造成错误匹配。开发者需要保存 trackTimerStart() 的返回值,以便后续针对性地进行暂停、恢复或停止。

using SensorsAnalytics;

var result = SensorsDataAPI.TrackTimerStart("BuyGoods");
...
SensorsDataAPI.TrackTimerEnd("BuyGoods" or result);
// 开始第一个事件计时
var timer1 = SensorsDataAPI.TrackTimerStart("testTimer");

// 开始第二个事件计时
var timer2 = SensorsDataAPI.TrackTimerStart("testTimer");

//如果需要暂停第一个事件计时
SensorsDataAPI.TrackTimerPause(timer1);

//如果需要恢复第一个事件计时
SensorsDataAPI.TrackTimerResume(timer1);

// 结束第一个事件计时
SensorsDataAPI.TrackTimerEnd(timer1);

// 结束第二个事件计时
SensorsDataAPI.TrackTimerEnd(timer2);
C#

3. 用户属性

3.1. ProfileSet

ProfileSet 方法可以设置用户属性,同一个 key 被多次设置时,value 的值会进行覆盖替换:

using SensorsAnalytics;

try
{
	Dictionary<string, object> properties = new Dictionary<string, object>();
	// 设定用户性别属性 "Sex" 为 "Male"
	properties.Add("Sex", "Male");
	// 设定用户年龄属性 "Age" 为 18
	properties.Add("Age", 18");
	// 设定用户属性
	SensorsDataAPI.ProfileSet(properties);
}
catch (Exception ex)
{
	//handle exception
}
C#

3.2. ProfileSetOnce

对于需要保证只有首次设置有效的属性,如用户首次重置金额、首次设置的昵称等,可以使用 ProfileSetOnce 方法进行设置。与 ProfileSet 方法不同的是,如果被设置的用户属性已经存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建:

using SensorsAnalytics;

try
{
	Dictionary<string, object> properties = new Dictionary<string, object>();
	// 设定用户 AdSource 渠道为为 "App Store"
	properties.Add("AdSource", "App Store");
	// 设定用户属性
	SensorsDataAPI.ProfileSetOnce(properties);
}
catch (Exception ex)
{
	//handle exception
}
C#

3.3. 其他 API

其他 API 可以在 Sample 工程中找到使用方式,也可以直接查看 SensorsDataAPI.cs 文件中的方法描述。