设置用户 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 发生变化的情况。
- macOS:默认使用当前计算机的登录帐户相关联的唯一字符串作为匿名 ID,通过 Unreal Engine 提供的接口 FPlatformMisc::GetLoginId() 获取,如果获取不到则获取随机的 UUID。
- Windows:默认使用当前计算机的登录帐户相关联的唯一字符串作为匿名 ID,通过 Unreal Engine 提供的接口 FPlatformMisc::GetLoginId() 获取,如果获取不到则获取随机的 UUID。
当用户注册成功或登录成功时,需要调用 SDK 的 Login 方法:
USensorsAnalytics::Login("登录 ID");
为了准确记录登录用户的行为信息,建议在以下时机各调用一次 Login 方法:
- 用户在注册成功时
- 用户登录成功时
- 已登录用户每次启动 App 时
埋点事件采集
设置事件公共属性
对于所有事件都需要添加的属性,初始化 SDK 后,可以通过 RegisterSuperProperties 将属性注册为公共属性:
USensorsAnalytics::RegisterSuperProperties("{\"GameName\":\"MyGame\"}");
公共属性会保存在本地缓存中,可以通过 UnregisterSuperProperty 删除指定公共属性,或使用 ClearSuperProperties 删除所有已设置的事件公共属性。
记录激活事件
可以调用 TrackAppInstall 方法记录激活事件,多次调用此方法只会在第一次调用时触发激活事件:
USensorsAnalytics::TrackAppInstall("{\"DownloadChannel\":\"AppStore\"}");
Windows & macOS 平台在 v0.0.3 及之后的版本支持 TrackAppInstall 方法
代码埋点追踪事件
SDK 初始化后,可以通过 Track 方法追踪用户行为事件,并为事件添加自定义属性:
USensorsAnalytics::Track("BuyProduct", "{\"ProductID\":123456,\"ProductCatalog\":\"Laptop Computer\"}");
用户属性
设置用户属性
Set 方法可以设置用户属性,同一个 key 被多次设置时,value 的值会进行覆盖替换:
USensorsAnalytics::Set("{\"Gender\":\"Male\",\"Age\":18}");
记录初次设定的用户属性
对于只在首次设置时有效的属性,我们可以使用 SetOnce 记录这些属性。与 Set 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。因此,SetOnce 适用于为用户设置首次激活时间、首次注册时间等属性。例如:
USensorsAnalytics::SetOnce("{\"AdSource\":\"Email\"}");
数值类型的属性
对于数值类型的用户属性,可以使用 Increment 对属性值进行累加。常用于记录用户付费次数、付费额度、积分等属性。例如:
USensorsAnalytics::Increment("{\"UserPaid\":1}");
列表类型的属性
对于用户喜爱的电影、用户点评过的餐厅等属性,可以记录列表型属性。例如:
USensorsAnalytics::Append("Movies", "[\"Sicario\",\"Love Letter\"]");
属性取消
如果需要取消已设置的某个用户属性,可以调用 Unset 进行取消:
USensorsAnalytics::Unset("Age");
数据存储与发送
需要更精细地控制神策分析可以通过以下选项设置数据采集功能。
数据采集
在每次调用 Track、Login、ProfileSet 等方法时,神策分析 SDK 会将埋点事件保存在缓存中,并会检查如下条件,以判断是否向服务器上传数据:
- 是否是 WIFI/2G/3G/4G/5G 网络条件(目前只支持 Android 和 iOS 端)
- 是否满足发送条件之一:
- 与上次发送的时间间隔是否大于 Flush Interval
- 本地缓存日志数目是否大于 Flush Bulk Size
- 事件类型为 Login 方法触发的 $SignUp 事件
默认的 Flush Bulk Size 为 100 条,默认的 Flush Interval 为 15 秒。满足条件后,神策分析 SDK 会将数据 gzip 压缩后,批量发送到神策分析。
如果追求数据采集的时效性,可以调用 Flush 方法,强制将数据发送到神策分析,例如:
USensorsAnalytics::Flush();
对于 Android 和 iOS 端,进入后台状态时,SDK 会调用 Flush 方法,将缓存的数据发送到神策分析。
清空本地缓存事件
可以通过 DeleteAll 方法,删除本地存储的所有事件。
如果不是特殊要求,请不要调用此方法。
USensorsAnalytics::DeleteAll();