基础 API 介绍(Cocos2d-x)
|
收藏
1. 用户关联
1.1. 用户登录
当用户注册成功或者登录成功时,需要调用 SDK 的 - login: 接口
sensorsdata::SensorsAnalytics::login("<#登录 id#>")
为了准确记录登录用户的行为信息,建议在以下时机各调用一次 - login: 接口
- 用户在注册成功时
- 用户登录成功时
- 已登录用户每次启动 App 时
2. 用户属性
2.1. 设置用户属性
-profileSet: 方法可以设置用户属性,同一个 key 多次设置时,value 值会进行覆盖替换:
// 设定用户年龄属性 "Age" 为 18
sensorsdata::ObjectNode usersProperties;
usersProperties.setNumber("Age", 18);
sensorsdata::SensorsAnalytics::profileSet(usersProperties);
2.2. 记录初次设定的用户属性
对于只在首次设置时有效的属性,我们可以使用 profileSetOnce 记录这些属性。与 profileSet 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。因此,profileSetOnce 适用于为用户设置首次激活时间、首次注册时间等属性。例如:
// 设定用户渠道为 "developer@sensorsdata.cn" 的 "AdSource" 属性值为 "XXX Store"
sensorsdata::ObjectNode usersProperties;
usersProperties.setString("AdSource", "XXX Store");
sensorsdata::SensorsAnalytics::profileSetOnce(usersProperties);
// 再次设定用户渠道,设定无效, "AdSource" 属性值仍然是 "XXX Store" sensorsdata::ObjectNode usersProperties;
sensorsdata::ObjectNode usersProperties;
usersProperties.setString("AdSource", "Email");
sensorsdata::SensorsAnalytics::profileSetOnce(usersProperties);
3. 埋点事件采集
在 SDK 初始化完成之后,您可以通过以下接口进行数据埋点。
3.1. 代码埋点追踪事件
SDK 初始化后,可以通过 -track: 方法追踪用户行为事件,并为事件添加自定义属性。
其中对应的事件名为:BuyProduct; 对应的事件自定义属性为 ProductID 和 UserLevel;
sensorsdata::ObjectNode eventProperties;
// 设置商品类别
eventProperties.setString("ProductCatalog", "Laptop Computer");
// 设置商品 ID
eventProperties.setNumber("ProductID", 3);
sensorsdata::SensorsAnalytics::track("BuyProduct", eventProperties);
注意
事件名和事件属性的格式规范,请参考数据格式。
3.2. 埋点事件采集时长属性
可以通过计时器统计事件的持续时间。首先,在事件开始时调用 -trackTimerStart: ,该方法并不会真正发送事件;在事件结束时,调用 -trackTimerEnd: ,SDK 会触发 "Event" 事件,并自动将事件持续时间记录在事件属性 "$event_duration" 中。例如记录用户浏览商品页面的时间:
sensorsdata::SensorsAnalytics::trackTimerStart("ViewProduct");
sensorsdata::ObjectNode eventProperties;
// 设置商品类别
eventProperties.setString("ProductCatalog", "Laptop Computer");
// 设置商品 ID
eventProperties.setNumber("product_id", 3);
sensorsdata::SensorsAnalytics::trackTimerEnd("ViewProduct", eventProperties);
多次调用 -trackTimerStart: 时,事件的开始时间以最后一次调用时为准。注意务必确保 trackTimerStart 和 trackTimerEnd 接口配对使用,多次调用 -trackTimerEnd: 会触发无时长的埋点事件。
统计事件时长支持暂停和恢复,通过调用 -trackTimerPause: 和 -trackTimerResume: 来分别实现暂停和恢复。如果需要清空已记录的时长事件则调用 -clearTrackTimer: 接口。
3.3. 物品元数据上报
3.3.1. 设置物品属性
直接设置一个物品,如果已存在则覆盖。除物品 ID 与物品所属类型外,其他物品属性需在 properties 中定义。物品属性中,属性名称与属性值的约束条件与事件属性相同,详细说明请参考 数据格式。
sensorsdata::ObjectNode itemProperties;
// 设置商品类别
eventProperties.setString("ProductCatalog", "Laptop Computer");
// 设置商品 ID
eventProperties.setNumber("product_id", 3);
sensorsdata::SensorsAnalytics::itemSet("itemType", "itemId", itemProperties);
3.3.2. 删除物品属性
如果物品不可被推荐需要下线,删除该物品即可,如不存在则忽略。除物品 ID 与 物品所属类型外,不解析其他物品属性。
sensorsdata::SensorsAnalytics::itemDelete("itemType", "itemId");
4. 事件属性
在进行埋点事件追踪时,您可以根据需求对埋点事件进行属性的定义。目前 SDK 中提供了公共属性用于给每个埋点事件添加属性,同时公共属性又分为静态公共属性和动态公共属性。静态公共属性用于设置更新频率较低的属性,动态公共属性用于设置更新频率高的属性。当同一事件中出现相同 Key 的属性时,SDK 覆盖优先级:预置属性 < 静态公共属性 < 动态公共属性 < 自定义属性。
4.1. 静态公共属性
静态公共属性是指对于所有事件都需要添加的属性,初始化 SDK 后,可以通过 -registerSuperProperties: 将属性注册为公共属性。设置方法如下:
// 将应用名称作为事件公共属性,后续所有追踪的事件都会自动带上 "AppName" 属性
sensorsdata::ObjectNode superProperties;
// 设置商品类别
eventProperties.setString("AppName", "AppName");
sensorsdata::SensorsAnalytics::registerSuperProperties(superProperties);
注意
公共属性会保存在 App 本地缓存中,可以通过 - unregisterSuperProperties: 删除一个或多个公共属性;或使用 - clearSuperProperties: 删除所有已经设置的事件公共属性。
5. 数据存储与发送
需要更精细地控制神策分析可以通过以下选项设置数据采集功能。
5.1. 数据采集
在每次调用 -track: 、-login:、-profileSet: 等方法时,神策分析 SDK 会将埋点事件保存在数据库中,并会检查如下条件,以判断是否向服务器上传数据:
- 是否是 WIFI/2G/3G/4G/5G 网络条件
- 是否满足发送条件之一:
- 与上次发送的时间间隔是否大于 flushInterval
- 本地缓存日志数目是否大于 flushBulkSize
- 事件类型为 login() 方法触发的 $SignUp 事件
默认的 flushBulkSize 为 100 条,默认的 flushInterval 为 15 秒。满足条件后,神策分析 SDK 会将数据 gzip 压缩后,批量发送到神策分析。
如果追求数据采集的时效性,可以调用 -flush: 方法,强制将数据发送到神策分析,例如:
// 记录用户登录事件
sensorsdata::SensorsAnalytics::track("UserLogin");
// 强制发送数据
sensorsdata::SensorsAnalytics::flush();
在 App 进入后台状态时,SDK 会调用 -flush: 方法,将缓存的数据发送到神策分析。
5.2. 设置发送数据的网络策略
默认情况下,在 WIFI/3G/4G/5G 网络条件下,SDK 都会尝试去同步数据。 sensors.setFlushNetworkPolicy() 方法来指定发送数据的网络策略。例如:
//指定只在 3G/4G/WIFI 条件下发送数据。
sensorsdata::SensorsAnalytics::setFlushNetworkPolicy(kFlush3G|kFlush4G|kFlushWiFi);
5.3. 清空本地缓存事件
可以通过 deleteAll() 方法,删除 App 本地存储的所有事件。
如果不是特殊要求,请不要调用此方法。
//删除 App 本地存储的所有事件
sensorsdata::SensorsAnalytics::.deleteAll();
6. 全埋点
cocox2d-x 支持 $AppStart(App 启动)、$AppEnd(App 退出)两种全埋点事件。
Android SDK 为了应对多进程、强杀等场景,加入了 30 秒的 session 机制,用户退出 App 到后台 30 秒的时候,才会触发退出事件,之后再启动 App,才会触发启动事件,用户如果在 30 秒内打开了 App,那么是没有对应的退出事件与启动事件的。另外,如果在退出 App 到后台 30 秒内,进程还没有被杀掉,那么此时会触发退出事件并尝试上报,如果进程被杀掉了,那么退出事件会在下一次启动时补发。所以在查看数据时,一般退出事件比启动事件少。
6.1. 开启全埋点
SDK 可以自动采集一些用户行为,如 App 启动、退出。初始化 SDK 时,可以配置需要开启的全埋点类型:
String SA_SERVER_URL = "数据接收地址";
// 初始化配置
SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
// 开启全埋点「启动、退出」
saConfigOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_START |
SensorsAnalyticsAutoTrackEventType.APP_END);
// 需要在主线程初始化神策 SDK
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
// 引入神策分析 SDK
#import <SensorsAnalyticsSDK/SensorsAnalyticsSDK.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 初始化配置
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:<#数据接收地址#> launchOptions:launchOptions];
// 开启全埋点「启动、退出」
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart |
SensorsAnalyticsEventTypeAppEnd;
// 初始化 SDK
[SensorsAnalyticsSDK startWithConfigOptions:options];
...
return YES;
}
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。