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 发生变化的情况。
  • macOS:默认使用当前计算机的登录帐户相关联的唯一字符串作为匿名 ID,通过 Unreal Engine 提供的接口 FPlatformMisc::GetLoginId() 获取,如果获取不到则获取随机的 UUID。
  • Windows:默认使用当前计算机的登录帐户相关联的唯一字符串作为匿名 ID,通过 Unreal Engine 提供的接口 FPlatformMisc::GetLoginId() 获取,如果获取不到则获取随机的 UUID。

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

USensorsAnalytics::Login("登录 ID");
CODE

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

  • 用户在注册成功时
  • 用户登录成功时
  • 已登录用户每次启动 App 时

2. 埋点事件采集

2.1. 设置事件公共属性

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

USensorsAnalytics::RegisterSuperProperties("{\"GameName\":\"MyGame\"}");
CODE

公共属性会保存在本地缓存中,可以通过 UnregisterSuperProperty 删除指定公共属性,或使用 ClearSuperProperties 删除所有已设置的事件公共属性。

2.2. 记录激活事件

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

USensorsAnalytics::TrackAppInstall("{\"DownloadChannel\":\"AppStore\"}");
CODE

目前只支持 Android 和 iOS 端

2.3. 代码埋点追踪事件

SDK 初始化后,可以通过 Track 方法追踪用户行为事件,并为事件添加自定义属性:

USensorsAnalytics::Track("BuyProduct", "{\"ProductID\":123456,\"ProductCatalog\":\"Laptop Computer\"}");
CODE

3. 用户属性

3.1. 设置用户属性

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

USensorsAnalytics::Set("{\"Gender\":\"Male\",\"Age\":18}");
CODE

3.2. 记录初次设定的用户属性

对于只在首次设置时有效的属性,我们可以使用 SetOnce 记录这些属性。与 Set 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。因此,SetOnce 适用于为用户设置首次激活时间、首次注册时间等属性。例如:

USensorsAnalytics::SetOnce("{\"AdSource\":\"Email\"}");
CODE

3.3. 数值类型的属性

对于数值类型的用户属性,可以使用 Increment 对属性值进行累加。常用于记录用户付费次数、付费额度、积分等属性。例如:

USensorsAnalytics::Increment("{\"UserPaid\":1}");
CODE

3.4. 列表类型的属性

对于用户喜爱的电影、用户点评过的餐厅等属性,可以记录列表型属性。例如:

USensorsAnalytics::Append("Movies", "[\"Sicario\",\"Love Letter\"]");
CODE

3.5. 属性取消

如果需要取消已设置的某个用户属性,可以调用 Unset 进行取消:

USensorsAnalytics::Unset("Age");
CODE

4. 数据存储与发送

需要更精细地控制神策分析可以通过以下选项设置数据采集功能。

4.1. 数据采集

在每次调用 TrackLoginProfileSet 等方法时,神策分析 SDK 会将埋点事件保存在数据库中,并会检查如下条件,以判断是否向服务器上传数据:

  1. 是否是 WIFI/2G/3G/4G/5G 网络条件(目前只支持 Android 和 iOS 端
  2. 是否满足发送条件之一:
    1. 与上次发送的时间间隔是否大于 Flush Interval
    2. 本地缓存日志数目是否大于 Flush Bulk Size
    3. 事件类型为 Login 方法触发的 $SignUp 事件

默认的 Flush Bulk Size 为 100 条,默认的 Flush Interval 为 15 秒。满足条件后,神策分析 SDK 会将数据 gzip 压缩后,批量发送到神策分析。

如果追求数据采集的时效性,可以调用 Flush 方法,强制将数据发送到神策分析,例如:

USensorsAnalytics::Flush();
CODE

对于 Android 和 iOS 端,进入后台状态时,SDK 会调用 Flush 方法,将缓存的数据发送到神策分析。

4.2. 清空本地缓存事件

可以通过 DeleteAll 方法,删除本地存储的所有事件。

如果不是特殊要求,请不要调用此方法。

USensorsAnalytics::DeleteAll();
CODE