1. 全埋点采集策略

神策 iOS SDK 全埋点包括四个自动采集的事件:

1.1. $AppStart(App 启动) 事件

App 启动或从后台恢复时,触发 $AppStart 事件,事件中包含以下属性:

  • $is_first_time - Bool 类型,标识本次启动是否为 App 安装后首次启动;
  • $is_first_day - Bool 类型,标识本次启动与 App 安装后的首次启动是否为同一天;
  • $resume_from_background - Bool 类型,Yes 为从后台恢复,No 为冷启动。

$AppStartPassively(App被动启动)事件是一种系统后台唤醒的启动事件,事件属性和 $AppStart 事件相同,更多信息可参考   App 被动启动($AppStartPassively) 是什么事件

1.2. $AppEnd(App 退出)

App 进入后台或被强制退出时,触发 $AppEnd 事件,事件中包含以下属性:

  • $event_duration - Number 类型,本次退出与最近一次 App 启动的事件间隔,单位为秒。

1.3. $AppViewScreen(App 浏览页面) 事件

App 浏览页面(UIViewController 的 - viewDidAppear: 被调用)时,会触发 $AppViewScreen 事件,事件中包含以下属性:

  • $title - String 类型,SDK 会尝试从navigationItem 的 titleView 或 title 属性中控制器的标题信息;
  • $screen_name - String 类型,默认值为当前 ViewController 类名。

1.4. $AppClick(App 元素点击) 事件

控件被点击时,触发 $AppClick 事件,并且包含该控件的基本信息:

  • $element_type - String 类型,表示控件的类型;
  • $element_content - String 类型,表示控件的内容;
  • $title - String 类型,表示控件所在页面的标题信息;
  • $screen_name - String 类型,表示控件所在页面的类名;
  • $element_position - String 类型,cell 点击时特有的属性,表示控件位置信息,格式为 section:row

2. 事件的忽略与补充

对于全埋点中 App 页面浏览和 App 元素点击,开启全埋点后,SDK 也支持通过配置忽略部分页面或控件的采集。

2.1. 忽略页面的浏览事件

// 该方法支持多次调用,对合集进行忽略
[[SensorsAnalyticsSDK sharedInstance] ignoreAutoTrackViewControllers:@[@"MyViewController",
																	   @"BaseViewController"]];
CODE

2.2. 忽略某个控件的点击事件

button.sensorsAnalyticsIgnoreView = YES;
CODE

2.3. 忽略某类控件的点击事件

// 该方法支持多次调用,对合集进行忽略
[[SensorsAnalyticsSDK sharedInstance] ignoreViewType:[MyButton class]];
[[SensorsAnalyticsSDK sharedInstance] ignoreViewType:[MyView class]];
CODE

如果没有开启全埋点,但是想采集部分页面的浏览或部分控件的点击事件,SDK 也有相应的接口支持代码触发 App 页面浏览和 App 元素点击事件。

2.4. 手动触发页面的浏览事件

// 可在 viewDidAppear: 中调用代码进行触发
[[SensorsAnalyticsSDK sharedInstance] trackViewScreen:self.childViewControllers[0]];
CODE

神策分析点击图、可视化全埋点功能,只支持全埋点方式触发的 App 点击事件。

2.5. 手动触发控件的点击事件

[[SensorsAnalyticsSDK sharedInstance] trackViewAppClick:button];
CODE

3. 属性的补充与修改

如果在使用全埋点 App 页面浏览和 App 元素点击时遇到如下问题:

  • 需要给控件或页面添加自定义信息;
  • 部分预置属性未采集到,如图片按钮采集不到 $element_content 属性,页面未采集到 $title 属性;
  • 采集的预置属性不符合业务需求。

则需要您在代码中对全埋点采集的属性进行手动设置,SDK 会使用代码中设置值对全埋点属性进行补充或覆盖。

3.1. 页面设置自定义信息

通过实现 - getTrackProperties 协议方法给页面设置自定义属性:

// 1. UIViewController 遵循 SAAutoTracker 协议
// 2.- getTrackProperties 协议方法中返回自定义的页面信息
- (NSDictionary *)getTrackProperties {
	return @{@"$title": @"首页",
			 @"type": @"vendor"};
}
CODE

通过此方式设置的页面属性,页面浏览事件全部生效;元素点击事件只有 $title$screen_name 会进行生效。

3.2. 页面设置来源($referrer)信息

如果需要在 App 浏览页面事件中添加当前页面的来源信息,可以通过实现 - getScreenUrl: 返回一个自定义的页面标识。
自定义的页面标识会设置到当前页面的 $url 属性中,同时该标识会设置到下一个页面的 $referrer 属性中。后续通过 $referrer 属性即可得知当前页面的上一个页面信息。

// 1. UIViewController 遵循 SAScreenAutoTracker 协议
// 2.- getScreenUrl 协议方法中返回自定义的页面标识
- (NSString *)getScreenUrl {
	return @"sa://page/product_detail";
}
CODE

3.3. 控件设置自定义属性

继承自 UIView 的控件,可通过 sensorsAnalyticsViewProperties 设置自定义信息。

homeBtn.sensorsAnalyticsViewProperties = @{@"$element_content": @"首页"};
CODE

3.4. cell 设置自定义属性

cell 存在重用机制,不能直接设置 sensorsAnalyticsViewProperties 属性,需要使用如下方法进行设置:

// 1. 给 tableView 或 collection 设置 sensorsAnalyticsDelegate
self.tableView.sensorsAnalyticsDelegate = self;

// 2. sensorsAnalyticsDelegate 中实现相应方法并返回自定义属性
-(NSDictionary *) sensorsAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
	return @{@"customProperty":@"MyValue"};
}
CODE