WDCAnalysis
伟东云统计 SDK 使用说明
提示:所有的接口在 WDCAnalysisSDK.h 文件中。
一.sdk初始化
在 application:didFinishLaunchingWithOptions:
方法中进行初始化
- 1.设置 debug 模式(统计记录不上传服务器、打印日志。release 环境需要去除。)
- 2.设置 accessKey(由后台分配)
- 3.设置 userId(统计记录的 userId,如果不需要统计 userId 可以不设置。如果除了 userId 外还需要统计 locationCode,可以调用
setupUserId:locationCode:
方法设置) - 4.页面统计初始化(如果不使用页面统计可以不设置)
- 5.崩溃统计初始化(如果不使用崩溃统计可以不设置)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// Override point for customization after application launch.
[self setupAnalysis];
return YES;
}
/// 统计sdk设置
- (void)setupAnalysis{
/// 设置为调试模式(统计记录不上传服务器,打印日志)
// [WDCAnalysisSDK setupDebug:YES];
/// 设置你的accessKey
[WDCAnalysisSDK setupAccessKey:@""];
/// 设置userId (统计记录/崩溃记录的userId)
[WDCAnalysisSDK setupUserId:[WDCUser sharedUser].userId];
/// 设置页面统计的控制器类名与页面名称、页面Id的对应关系
[WDCAnalysisSDK setupMapForClassNameAndPageInfo:@{
@"WDCHomeViewController": @{
@"pageId": @"WDCAnalysisExample.home.homePage",
@"pageName": @"首页",
},
@"WDCItemListViewController": @{
@"pageId": @"WDCAnalysisExample.home.itemList",
@"pageName": @"Item列表",
},
// @"WDCItemDetailViewController": @{
// @"pageId": @"WDCAnalysisExample.home.itemDetail",
// @"pageName": @"Item详情",
// },
}];
/// 崩溃统计初始化
[WDCAnalysisSDK setupCrashAnalysis];
}
二.关于设置 userId
设置的 userId 为统计记录的 userId 属性。建议调用时机:
- 1.sdk 初始化时
- 2.登录成功(获取到新的 userId)时
- 3.退出登录(清空 userId,setupUserId:nil)时
三.关于上传统计记录
本 SDK 默认每 3 分钟进行一次统计记录上传,调用 uploadAnalysisRecords
方法可以立刻上传本地存储的统计记录到服务器。为了让统计记录的上传更加及时,建议调用时机:
- 1.
applicationWillResignActive:
方法 - 2.退出登录时
- (void)applicationWillResignActive:(UIApplication *)application{
/// 建议应用程序挂起前上传一下统计记录
[WDCAnalysisSDK uploadAnalysisRecords];
}
四. 页面统计
1. 自动统计
本SDK在每个UIViewController对象出现和消失时自动执行页面统计记录的处理。然而,只能自动获取哪个UIViewController对象出现/消失,至于将在生成的页面统计记录中的pageId、pageName命名为何,需要调用者告知。setupMapForClassNameAndPageInfo:
方法用于设置UIViewController类名与pageId、pageName的映射关系。
提示:没有在映射关系中设置的UIViewController不会进行自动统计。
/// 设置页面统计的UIViewController类名与pageId、pageName的对应关系
[WDCAnalysisSDK setupMapForClassNameAndPageInfo:@{
@"WDCHomeViewController": @{
@"pageId": @"WDCAnalysisExample.home.homePage",
@"pageName": @"首页",
},
@"WDCItemListViewController": @{
@"pageId": @"WDCAnalysisExample.home.itemList",
@"pageName": @"Item列表",
},
// @"WDCItemDetailViewController": @{
// @"pageId": @"WDCAnalysisExample.home.itemDetail",
// @"pageName": @"Item详情",
// },
}];
2. 手动统计
有时,单个UIViewController类可能会对应多个页面,自动统计无法区分,此时可以使用手动统计。在进入页面和离开页面时调用以下两个方法。
/// 进入某个页面
+ (void)enterPageWithPageId:(NSString *)pageId pageName:(NSString *)pageName;
/// 离开某个页面
+ (void)leavePageWithPageId:(NSString *)pageId;
提示:手动统计的页面不能设置自动统计的映射关系,否则会统计两次,生成两条统计记录。
提示:建议尽量使用自动统计,手动统计代码量较大,只有在万不得已的情况下才使用。
下面是使用手动统计的UIViewController示例:
- (void)viewDidLoad {
[super viewDidLoad];
[self setupAnalysis];
}
- (void)setupAnalysis{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
///注:当一个控制器对应多个界面的情况下,使用这种方式的页面统计可以进行区分(对映关系里面就不能再设置这个控制器了,否则会重复统计)
///注:如果不是万不得已,最好使用设置对映关系的方式进行页面统计。这种方式建议只用于处理个别特例。
static NSString *const pageId = @"WDCAnalysisExample.home.itemDetail";
static NSString *const pageName = @"Item详情";
static NSString *const pageId1 = @"WDCAnalysisExample.home.itemDetailNew";
static NSString *const pageName1 = @"Item详情New";
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
if(1){
[WDCAnalysisSDK enterPageWithPageId:pageId pageName:pageName];
}else{
[WDCAnalysisSDK enterPageWithPageId:pageId1 pageName:pageName1];
}
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
if(1){
[WDCAnalysisSDK leavePageWithPageId:pageId];
}else{
[WDCAnalysisSDK leavePageWithPageId:pageId1];
}
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
if(1){
[WDCAnalysisSDK enterPageWithPageId:pageId pageName:pageName];
}else{
[WDCAnalysisSDK enterPageWithPageId:pageId1 pageName:pageName1];
}
}
- (void)applicationWillResignActive:(UIApplication *)application{
if(1){
[WDCAnalysisSDK leavePageWithPageId:pageId];
}else{
[WDCAnalysisSDK leavePageWithPageId:pageId1];
}
}
五. 自定义事件统计
1. 瞬时事件
当发生一个事件时,我们可以生成一条自定义事件统计记录。这个事件可以是任何你想统计的业务。你需要设置事件的eventId和eventName。事件可以附带一个props字典来存储一些相关属性。设置isRealTime为YES,则该事件就是一个实时事件,实时事件的统计记录会即时上传到服务器。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.enterItem = self.itemArray[indexPath.row];
[self performSegueWithIdentifier:@"itemListToItemDetail" sender:nil];
NSMutableDictionary *props = [NSMutableDictionary dictionary];
props[@"itemTitle"] = self.enterItem.itemTitle;
props[@"itemId"] = self.enterItem.itemId;
[WDCAnalysisSDK trackCustomEventWithEventId:@"WDCAnalysisExample.home.clickItemList" eventName:@"点击item列表" props:props isRealTime:YES];
}
2. 持续事件
有时我们想统计一些持久性的事件。在事件开始时调用trackCustomEventBeginWithEventId:eventName:
方法,在事件结束时调用trackCustomEventEndWithEventId:
方法。可以统计到事件持续的时间。
- (void)applicationDidBecomeActive:(UIApplication *)application{
[WDCAnalysisSDK trackCustomEventBeginWithEventId:kDurationOfUseEventId eventName:@"使用时长统计"];
}
- (void)applicationWillResignActive:(UIApplication *)application{
[WDCAnalysisSDK trackCustomEventEndWithEventId:kDurationOfUseEventId];
}
示例
要运行示例项目,先克隆仓库,然后从示例目录运行pod install
。
需求
安装
WDCAnalysis可通过CocoaPods获取。要安装,只需将以下行添加到Podfile中。
pod 'WDCAnalysis'
作者
xiongwei, [email protected]
许可证
WDCAnalysis可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。