设置用户 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 发生变化的情况。
用户登录
当用户注册成功或登录成功时,需要调用 SDK 的 Login 方法:
using SensorsAnalytics;
try
{
SensorsDataAPI.Login("登录 ID");
}
catch (Exception ex)
{
//handle exception
}
为了准确记录登录用户的行为信息,建议在以下时机各调用一次 Login 方法:
- 用户在注册成功时
- 用户登录成功时
设置自定义匿名 ID (可选)
如果您的游戏对每个用户有自己的匿名 ID 管理体系,则您可以调用 Identify 来设置访客 ID:
using SensorsAnalytics;
try
{
SensorsDataAPI.Identify("匿名 ID");
}
catch (Exception ex)
{
//handle exception
}
事件采集
记录激活事件
可以调用 - trackAppInstallWithProperties: 方法记录激活事件 $AppInstall,多次调用此方法只会在第一次调用时触发激活事件:
// 激活事件,可以添加自定义属性
Dictionary dictionary = new Dictionary();
dictionary.Add("DownloadChannel", "游戏下载渠道");
SensorsDataAPI.TrackAppInstall(dictionary);
设置事件公共属性
对于所有事件都需要添加的属性,初始化 SDK 后,可以通过 RegisterSuperProperties 将属性注册为公共属性:
using SensorsAnalytics;
try
{
Dictionary properties = new Dictionary();
// 将应用名称作为事件公共属性,后续所有 Track() 追踪的事件都会自动带上 "AppName" 属性
properties.Add("AppName", "Dota 传奇");
SensorsDataAPI.RegisterSuperProperties(properties);
}
catch (Exception ex)
{
//handle exception
}
事件时长
可以通过计时器统计事件的持续时间。首先,TrackTimerStart("EventName") ,该方法并不会真正发送事件;在事件结束时,调用 TrackTimerEnd("EventName", properties),SDK 会触发 "Event" 事件,并自动将事件持续时间记录在事件属性 "$event_duration" 中。在事件开始后你可以使用 TrackTimerPause("EventName") 来暂停事件计时,然后通过 TrackTimerResume("EventName") 来恢复事件计时。例如记录用户浏览商品页面的时间:
using SensorsAnalytics;
try
{
// 进入商品页面
// 调用 TrackTimerStart("ViewProduct") 标记事件启动时间
SensorsDataAPI.TrackTimerStart("ViewProduct");
// ... 用户浏览商品
// 离开商品页
Dictionary properties = new Dictionary();
// 在属性中记录商品 ID
properties.Add("country", "中国");
// 计时结束,触发 ViewProduct 事件
SensorsDataAPI.TrackTimerEnd("ViewProduct", properties);
}
catch (Exception ex)
{
//handle exception
}
同名事件交叉的时长统计
默认情况下,时长的统计以事件名作为标识,相同的事件名会自动匹配 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);
用户属性
ProfileSet
ProfileSet 方法可以设置用户属性,同一个 key 被多次设置时,value 的值会进行覆盖替换:
using SensorsAnalytics;
try
{
Dictionary properties = new Dictionary();
// 设定用户性别属性 "Sex" 为 "Male"
properties.Add("Sex", "Male");
// 设定用户年龄属性 "Age" 为 18
properties.Add("Age", 18");
// 设定用户属性
SensorsDataAPI.ProfileSet(properties);
}
catch (Exception ex)
{
//handle exception
}
ProfileSetOnce
对于需要保证只有首次设置有效的属性,如用户首次重置金额、首次设置的昵称等,可以使用 ProfileSetOnce 方法进行设置。与 ProfileSet 方法不同的是,如果被设置的用户属性已经存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建:
using SensorsAnalytics;
try
{
Dictionary properties = new Dictionary();
// 设定用户 AdSource 渠道为为 "App Store"
properties.Add("AdSource", "App Store");
// 设定用户属性
SensorsDataAPI.ProfileSetOnce(properties);
}
catch (Exception ex)
{
//handle exception
}
其他 API
其他 API 可以在 Sample 工程中找到使用方式,也可以直接查看 SensorsDataAPI.cs 文件中的方法描述。