整套解决方案:iOS SDK 自动采集指南
优采云 发布时间: 2020-08-31 19:37iOS SDK自动采集指南
iOS SDK自动采集指南1.自动采集简介
TA系统提供了自动数据采集的界面. 您可以根据业务需要选择需要自动采集的数据.
当前支持的自动数据采集是:
APP安装,记录正在安装的APP的日志,APP启动(包括打开APP并从后台唤醒),关闭APP(包括关闭APP并转移到后台)以及采集启动时间. 用户浏览APP中的页面(本机页面). 点击APP中的控件,以在APP崩溃时记录崩溃信息
接下来,我们将详细介绍每种数据的采集方法
2. 打开自动采集
您可以调用enableAutoTrack: 打开自动采集功能:
// 开启某个APPID实例的自动采集事件,支持多个APPID实例都开启自动采集
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
ThinkingAnalyticsEventTypeAppInstall |
ThinkingAnalyticsEventTypeAppEnd |
ThinkingAnalyticsEventTypeAppViewScreen |
ThinkingAnalyticsEventTypeAppClick |
ThinkingAnalyticsEventTypeAppViewCrash];
// 单APPID实例时可调用以下方法开启
// [[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
// ThinkingAnalyticsEventTypeAppInstall |
// ThinkingAnalyticsEventTypeAppEnd |
// ThinkingAnalyticsEventTypeAppViewScreen |
// ThinkingAnalyticsEventTypeAppClick |
// ThinkingAnalyticsEventTypeAppViewCrash];
以上参数分别表示为:
根据业务情况,您可以传递要采集的事件的相应参数. 对于多个参数,请使用|. 分裂.
如果您需要设置公共事件属性或设置自定义访问者ID,请确保在打开自动采集之前调用setSuperProperties: 或identify:.
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ThinkingAnalyticsSDK startWithAppId:@"APP_ID"
withUrl:@"SERVER_URL"];
return YES;
}
[[ThinkingAnalyticsSDK sharedInstance] identify:@"123ABCabc"];
[[ThinkingAnalyticsSDK sharedInstance] setSuperProperties:@{
@"Channel":@"ABC",
@"Server":123,
@"isTest":@YES
}];
//设置完访客ID与公共属性后,再开启自动采集
[[ThinkingAnalyticsSDK sharedInstance] enableAutoTrack:ThinkingAnalyticsEventTypeAppStart |
ThinkingAnalyticsEventTypeAppInstall |
ThinkingAnalyticsEventTypeAppEnd |
ThinkingAnalyticsEventTypeAppViewScreen |
ThinkingAnalyticsEventTypeAppClick |
ThinkingAnalyticsEventTypeAppViewCrash];
3. 自动采集事件3.1 APP安装事件的详细说明
APP安装事件将记录APP的实际安装并在启动APP时报告. 事件触发时间是安装后首次启动APP的时间. APP升级不会触发安装事件,并且在删除并重新安装后将报告安装事件.
3.2 APP启动事件
当用户启动APP或从后台唤醒APP时,将触发APP启动事件. 详细的事件描述如下:
3.3 APP关闭事件
当用户关闭APP或将APP转移到后台时,将触发APP关闭事件. 详细的事件描述如下:
3.4 APP浏览页面事件
APP浏览页面事件将在用户切换页面(View Controller)时触发浏览页面事件. 详细的事件描述如下:
可以将其他属性添加到页面浏览事件以扩展其分析价值. 以下是自定义页面浏览事件的属性的方法:
3.4.1自定义页面浏览事件的属性
对于从UIViewController继承的View Controller,您可以实现Protocol
要设置页面的属性和URL信息,SDK会自动将getTrackProperties: 的返回值添加到View Controller的APP浏览页面事件中;另外,getScreenUrl: 的返回值将用作页面的URL架构. 触发该页面的浏览事件时,将添加预设属性#url,其值为当前页面的URL架构. 同时,SDK将在跳转之前采用页面的URL架构. 如果可以获取,它将被添加到预设属性#Referrer是转发地址.
@interface MYController : UITableViewController
@end
@implementation MYController
//对所有APPID实例进行设置
- (NSDictionary *)getTrackProperties {
return @{@"PageName" : @"商品详情页", @"ProductId" : @12345};
}
- (NSString *)getScreenUrl {
return @"APP://test";
/** 多APPID实例单独进行设置
* - (NSDictionary *)getTrackPropertiesWithAppid{
* return @{@"appid1" : @{@"testTrackProperties" : @"测试页"},
* @"appid2" : @{@"testTrackProperties2" : @"测试页2"},
* };
* }
* -(NSDictionary *)getScreenUrlWithAppid {
* return @{@"appid1" : @"APP://test1",
* @"appid2" : @"APP://test2",
* };
* }
*/
}
@end
3.5 APP控件单击事件
当用户单击控件时,将触发APP控件的点击事件
对于页面上View的click事件,有很多方法可以设置更多属性以扩展其分析价值:
3.5.1设置控件元素ID
您可以在页面上设置元素(视图)的元素ID,以区分具有不同含义的元素. 您可以使用以下方法设置元素ID:
//对所有APPID实例进行设置
self.table1.thinkingAnalyticsViewID = @"testtable1";
// 多APPID实例单独进行设置
// self.table1.thinkingAnalyticsViewIDWithAppid = @{ @"app1" : @"testtableID2",
@"app2" : @"testtableID3" };
这时,预设属性#element_id将添加到table1的click事件中,并且该值是在此处传递的值
3.5.2自定义控件点击事件的属性
对于大多数控件,您可以直接使用thinkingAnalyticsViewProperties设置自定义属性:
//对所有APPID实例进行设置
self.table1.thinkingAnalyticsViewProperties = @{@"key1":@"value1"};
// 多APPID实例单独进行设置
// self.table1.thinkingAnalyticsViewPropertiesWithAppid = @{@"app1":@{@"tablekey":@"tablevalue"},
@"app2":@{@"tablekey2":@"tablevalue2"}
};
3.5.3 UITableView和UI采集View控件的单击事件属性
对于UITableView和UI采集View,您需要通过实现Protocol来设置自定义属性:
1. 首先在View Controller类中实现协议
2. 其次,在类中设置代理,建议在viewDidLoad方法中设置
self.table1.thinkingAnalyticsDelegate = self;
3. 然后根据视图控制器的类型实现该方法
//对所有APPID实例进行设置,设置UITableView的自定义属性
-(NSDictionary *) thinkingAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath
{
return @{@"testProperty":@"test"};
}
/** 多APPID实例单独进行设置
* -(NSDictionary *) thinkingAnalyticsWithAppid_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoPro":@"tablevalue"},
* @"app2":@{@"autoPro2":@"tablevalue2"}
* };
* }
*/
//对所有APPID实例进行设置,设置UICollectionView的自定义属性
-(NSDictionary *) thinkingAnalytics_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
{
return @{@"testProperty":@"test"};
}
/** 多APPID实例单独进行设置
* - (NSDictionary *)thinkingAnalyticsWithAppid_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoProCOLL":@"tablevalueCOLL"},
* @"app2":@{@"autoProCOLL2":@"tablevalueCOLL2"}
* };
* }
*/
4. 最后,在该类的viewWillDisappear方法中将thinkingAnalyticsDelegate设置为nil
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.table1.thinkingAnalyticsDelegate = nil;
}
3.6 APP崩溃事件
当APP发生未捕获的异常时,将报告APP崩溃事件
4. 忽略自动采集事件
您可以通过以下方式忽略页面或控件的自动采集事件
4.1忽略页面的自动采集事件
对于某些页面(View Controller),如果您不想传输自动采集事件(包括页面浏览和控制点击事件),则可以通过以下方法忽略它们:
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"IgnoredViewController"];
// 多APPID实例时对单个APPID实例设置,忽略某个页面的自动采集事件
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] ignoreAutoTrackViewControllers:array];
// 单APPID实例时可调用
// [[ThinkingAnalyticsSDK sharedInstance] ignoreAutoTrackViewControllers:array];
4.2忽略某种控件类型的click事件
如果您需要忽略某种控件类型的click事件,则可以使用以下方法将其忽略
// 多APPID实例时对单个APPID实例设置,忽略某个类型的所有控件
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] ignoreViewType:[IgnoredClass class]];
// 单APPID实例时可调用
// [[ThinkingAnalyticsSDK sharedInstance] ignoreViewType:[IgnoredClass class]];
4.3忽略元素的点击事件(视图)
如果要忽略某个元素(查看)的click事件,可以使用以下方法将其忽略
// 对所有APPID实例进行设置
self.table1.thinkingAnalyticsIgnoreView = YES;
// 多APPID实例单独进行设置
// self.table2.thinkingAnalyticsIgnoreViewWithAppid = @{@"appid1" : @YES,@"appid2" : @NO};
5. 自动采集事件的预设属性
以下预设属性是每个自动采集事件中唯一的预设属性
属性名称中文名称说明
#resume_from_background
是否从后台醒来
表示是打开还是从后台唤醒APP,值为true表示从后台唤醒,值为false表示直接激活
属性名称中文名称说明
#duration
活动持续时间
指示此APP访问的持续时间(从开始到结束),单位为秒
属性名称中文名称说明
#title
页面标题
是View Controller的标题,该值是controller.navigationItem.title属性的值
#screen_name
页面名称
是View Controller的类名
#url
页面地址
当前页面的地址,您需要调用getScreenUrl来设置网址
#referrer
转发地址
跳转前页面的地址,跳转前页面需要调用getScreenUrl来设置网址
属性名称中文名称说明
#title
页面标题
是View Controller的标题,该值是controller.navigationItem.title属性的值
#screen_name
页面名称
是View Controller的类名
#element_id
元素ID
控件的ID需要通过thinkAnalyticsViewID设置
#element_type
元素类型
控制类型
#element_selector
元素选择器
控件的viewPath的拼接
#element_position
元素位置
控件的位置信息,仅当控件类型为UITableView或UI采集View时才存在,表示单击控件的位置,值为组号(Section): 行号(Row)
#element_content
元素内容
控件上的内容
属性名称中文名称说明
#app_crashed_reason
异常信息
字符类型,崩溃时记录堆栈跟踪