iOS SDK 全埋点的进阶使用
最后更新于:2019-11-22 17:37:31
全埋点采集策略
神策 iOS SDK 全埋点包括四个自动采集的事件:
$AppStart(App 启动) 事件
App 启动或从后台恢复时,触发 $AppStart
事件,事件中包含以下属性:
$is_first_time
- Bool 类型,标识本次启动是否为 App 安装后首次启动。$is_first_day
- Bool 类型,标识本次启动与 App 安装后的首次启动是否为同一天。$resume_from_background
- Bool 类型,Yes 为从后台恢复,No 为冷启动。
注1:$AppStartPassively
(App被动启动)事件是一种系统后台唤醒的启动事件,事件属性和 $AppStart
事件相同,更多信息可参考App 被动启动($AppStartPassively) 是什么事件?
$AppEnd(App 退出)
App 进入后台或被强制退出时,触发 $AppEnd
事件,事件中包含以下属性:
$event_duration
- Number 类型,本次退出与最近一次 App 启动的事件间隔,单位为秒。
$AppViewScreen(App 浏览页面) 事件
App 浏览页面(UIViewController 的 -viewDidAppear:
被调用)时,会触发 $AppViewScreen
事件,事件中包含以下属性:
$title
- String 类型,SDK 会尝试从navigationItem
的titleView
或title
属性中控制器的标题信息。$screen_name
- String 类型,默认值为当前 ViewController 类名。
$AppClick(App 元素点击) 事件
控件被点击时,触发 $AppClick
事件,并且包含该控件的基本信息:
$element_type
- String 类型,表示控件的类型。$element_content
- String 类型,表示控件的内容$title
- String 类型,表示控件所在页面的标题信息$screen_name
- String 类型,表示控件所在页面的类名$element_position
- String 类型,cell 点击时特有的属性,表示控件位置信息,格式为section:row
事件的忽略与补充
对于全埋点中 App 页面浏览和 App 元素点击,开启全埋点后,SDK 也支持通过配置忽略部分页面或控件的采集。
忽略页面的浏览事件
// 该方法支持多次调用,对合集进行忽略
[[SensorsAnalyticsSDK sharedInstance] ignoreAutoTrackViewControllers:@[@"MyViewController",
@"BaseViewController"]];
忽略某个控件的点击事件
button.sensorsAnalyticsIgnoreView = YES;
忽略某类控件的点击事件
// 该方法支持多次调用,对合集进行忽略
[[SensorsAnalyticsSDK sharedInstance] ignoreViewType:[MyButton class]];
[[SensorsAnalyticsSDK sharedInstance] ignoreViewType:[MyView class]];
如果没有开启全埋点,但是想采集部分页面的浏览或部分控件的点击事件,SDK 也有相应的接口支持代码触发 App 页面浏览和 App 元素点击事件。
手动触发页面的浏览事件
// 可在 `viewDidAppear:` 中调用代码进行触发
[[SensorsAnalyticsSDK sharedInstance] trackViewScreen:self.childViewControllers[0]];
注1神策分析点击图、可视化全埋点功能,只支持全埋点方式触发的 App 点击事件。
手动触发控件的点击事件
[[SensorsAnalyticsSDK sharedInstance] trackViewAppClick:button];
属性的补充与修改
如果在使用全埋点 App 页面浏览和 App 元素点击时遇到如下问题:
- 需要给控件或页面添加自定义信息
- 部分预置属性未采集到,如图片按钮采集不到
$element_content
属性,页面未采集到$title
属性 - 采集的预置属性不符合业务需求
则需要您在代码中对全埋点采集的属性进行手动设置,SDK 会使用代码中设置值对全埋点属性进行补充或覆盖。
页面设置自定义信息
通过实现 -getTrackProperties
协议方法给页面设置自定义属性
// 1. UIViewController 遵循 `SAAutoTracker` 协议
// 2.`- getTrackProperties` 协议方法中返回自定义的页面信息
- (NSDictionary *)getTrackProperties {
return @{@"$title": @"首页",
@"type": @"vendor"};
}
注1 通过此方式设置的页面属性,页面浏览事件全部生效;元素点击事件只有 $title
和 $screen_name
会进行生效。
页面设置来源($referrer)信息
如果需要在 App 浏览页面事件中添加当前页面的来源信息,可以通过实现 -getScreenUrl:
返回一个自定义的页面标识。
自定义的页面标识会设置到当前页面的 $url
属性中,同时该标识会设置到下一个页面的 $referrer
属性中。后续通过 $referrer
属性即可得知当前页面的上一个页面信息。
// 1. UIViewController 遵循 `SAScreenAutoTracker` 协议
// 2.`- getScreenUrl` 协议方法中返回自定义的页面标识
- (NSString *)getScreenUrl {
return @"sa://page/product_detail"
}
控件设置自定义属性
继承自 UIView 的控件,可通过 sensorsAnalyticsViewProperties
设置自定义信息。
homeBtn.sensorsAnalyticsViewProperties = @{@"$element_content": @"首页"};
cell 设置自定义属性
cell 存在重用机制,不能直接设置 sensorsAnalyticsViewProperties
属性,需要使用如下方法进行设置:
// 1. 给 tableView 或 collection 设置 `sensorsAnalyticsDelegate`
self.tableView.sensorsAnalyticsDelegate = self;
// 2. `sensorsAnalyticsDelegate` 中实现相应方法并返回自定义属性
-(NSDictionary *) sensorsAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
return @{@"customProperty":@"MyValue"};
}
// 3. 在 `viewWillDisappear`方法中将 `sensorsAnalyticsDelegate` 设置为 `nil`
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.tableView.sensorsAnalyticsDelegate = nil;
}