评测环境
评测环境:
测试对象 |
友盟iOS统计SDK v3.1.2 |
测试环境 |
MAC OS X(10.10) Xcode (5.1) |
测试设备 |
iPhone 4S |
系统版本 |
iOS 5.1 |
设备网络 |
wifi |
测试方法 |
客户端运行实例 测试API接口 |
测试时间 |
2014-07-25 10:10 |
测试时长 |
3小时 |
基本参数:
是否免费 |
免费 |
支持平台 |
Android、iOS、Windows Phone、 Windows RT |
统计延时 |
1-3秒 |
单个事件参数上限 |
10 |
参数值上限 |
1000 |
无网络环境 |
支持 |
对应用运行的影响 |
小 |
耗流量 |
小 |
统计log数据包 |
0.7K |
集成过程
客户端集成
如何快速集成友盟统计SDK:
注册友盟账号=》创建应用=》下载SDK=》集成开发=》测试应用=》发布应用
1.注册友盟账号
友盟开发者账号的注册地址:
http://www./users/sign_up
2.创建新应用
使用注册的友盟账号登录后进入我的产品,在屏幕左方会看到一个“添加新应用”按钮,点击选择添加新应用:
提交成功后会获得Appkey并提示如下界面,然后就可以进入测试模式。
3.下载IOS SDK
进入我的产品,选择刚创建的应用,左下方有个iOS 统计SDK下载的按钮,点击即可下载统计SDK。
4.集成开发
1)新建一个工程
2)添加友盟SDK和静态库
将下载的iOS SDK压缩包中的UMAnalytics_Sdk_3.1.2文件夹加入到工程中去,再添加libz.dylib。
3)导入头文件,添加测试文件
在.pch文件先加入如下代码:
2 | #define APPKEY @'53cde22c56240b55aa02368c' |
随便用一张测试图片加入到工程中去。
4)基本功能集成
首先配置统计发送策略和渠道
01 | - ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
03 | //reportPolicy:发送策略,只在模拟器和DEBUG模式下生效,真机release模式会自动改成BATCH。 |
05 | [MobClick startWithAppkey:APPKEY reportPolicy:BATCH channelId:@ 'Web' ]; |
07 | [MobClick setAppVersion:XcodeAppVersion]; |
09 | [MobClick setLogEnabled:YES]; |
实现页面的统计需要在每个View中配对调用如下方法:
1 | - ( void )viewWillAppear:( BOOL )animated{ |
2 | [super viewWillAppear:animated]; |
3 | [MobClick beginLogPageView:@ 'PageOne' ]; |
6 | - ( void )viewWillDisappear:( BOOL )animated{ |
7 | [super viewWillDisappear:animated]; |
8 | [MobClick endLogPageView:@ 'PageOne' ]; |
5)添加测试设备
由于这里使用的是测试数据,需要添加测试设备,并且自定义事件;
进入我的产品,管理,选择集成测试中的测试设备,这里可以看到测试设备列表,选择添加测试设备,进入如下界面;
选择设备所属平台,中间那个就是iPhone设备,在下方会出现这样一段代码:
1 | Class cls = NSClassFromString(@ 'UMANUtil' ); |
2 | SEL deviceIDSelector = @selector(openUDIDString); |
3 | NSString *deviceID = nil; |
4 | if (cls && [cls respondsToSelector:deviceIDSelector]){ |
5 | deviceID = [cls performSelector:deviceIDSelector]; |
7 | NSLog(@ '{\'oid\': \'%@\'}' , deviceID); |
把这段代码复制到项目工程中任意可运行处,运行工程;
将会产生日志输出,即设备识别信息,将输出的日志信息复制到上图中的设备识别信息栏中去。
确定后编辑设备信息完成。
6)统计自定义事件
要使用自定义事件,首先,在应用界面的统计分析-设置-事件页面中添加新的事件。
正确填写完相关信息即可完成事件创建。
例如要统计一个音乐播放事件,有name和singer参数,要统计它的发生次数,统计代码部分:
1 | NSDictionary *dict = @{@ 'name' :@ 'Snow' ,@ 'singer' :@ 'Bandari' }; |
2 | [MobClick event:@ '1001' attributes:dict]; |
这里的event是事件ID,attributes是参数,需要传进来一个字典。这样就可以统计事件在不同属性的取值。
7)获取在线参数
需要预先在网站上配置好参数,进入组件-在线参数添加新参数
添加完成后,在项目工程中添加如下代码:
2 | [MobClick updateOnlineConfig]; |
4 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onlineConfigCallBack:) name:UMOnlineConfigDidFinishedNotification object:nil]; |
5 | - ( void )onlineConfigCallBack:(NSNotification *)notification { |
6 | NSLog(@ 'online config has fininshed and params = %@' , notification.userInfo); |
8)社交统计
使用社交统计需要引用头文件:
1 | #import 'MobClickSocialAnalytics.h' |
例如当发送完一条新浪微博后,把发送拿到的微博类型,微博id,用户id初始化:
1 | MobClickSocialWeibo *weibo = [[MobClickSocialWeibo alloc]initWithPlatformType:MobClickSocialTypeSina weiboId:sinaWbId usid:nil param:nil]; |
参数:PlatformType是平台名,weiboId是发送完新浪微博获得的微博id,usid是用户id,param是微博相关参数;
然后把微博数据统计发送到友盟服务器:
1 | [MobClickSocialAnalytics postWeiboCounts:@[weibo] appKey:APPKEY topic:@ '这是测试用,你们不要理我' completion:^(NSDictionary *response, NSError *error) { |
2 | NSLog(@ '社交回调response:%@' ,response); |
参数:WeiboCounts是微博数组,appKey是应用的Appkey,topic是发送微博内容或话题。
9)广告(防止被AppStore审核拒绝)
获取广告URL,然后用一个WebView来展示:
1 | NSString *urlStr = [MobClick getAdURL]; |
2 | NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]; |
3 | [webVIew loadRequest:request]; |
主要功能
应用趋势(包括新增用户、活跃用户、留存用户、启动次数等信息)
渠道分析:显示用户来自的渠道和新增用户,活跃用户,累计占比等
终端属性(设备终端,网络及运营商,地域)
功能特色——社会化分享统计
DEMO展示
部分测试DEMO如下所示:
07 | UILabel *countLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 20, 100, 44)]; |
08 | countLabel.text = @ '计数统计' ; |
09 | countLabel.textAlignment = UITextAlignmentCenter; |
10 | [self.view addSubview:countLabel]; |
12 | NSArray *musicArr = @[@ '轻音乐' ,@ '摇滚' ,@ '民谣' ]; |
13 | for ( int i = 0; i<3; i ) { |
14 | UIButton *musicBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; |
15 | [musicBtn setTitle:[musicArr objectAtIndex:i] forState:UIControlStateNormal]; |
16 | musicBtn.frame = CGRectMake(20, 20 50 64*i, 120, 44); |
17 | musicBtn.tag = 1001 i; |
18 | [musicBtn addTarget:self action:@selector(musicEvent:) forControlEvents:UIControlEventTouchUpInside]; |
19 | [self.view addSubview:musicBtn]; |
22 | self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@ '微博分享' style:UIBarButtonItemStyleBordered target:self action:@selector(shareBtnClick)]; |
24 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@ '广告' style:UIBarButtonItemStyleBordered target:self action:@selector(openGG)]; |
29 | - ( void )musicEvent:(UIButton *)sender |
34 | NSDictionary *dict = @{@ 'name' :@ 'Snow' ,@ 'singer' :@ 'Bandari' }; |
35 | [MobClick event:@ '1001' attributes:dict]; |
40 | NSDictionary *dict = @{@ 'name' :@ '回不去了' ,@ 'singer' :@ '信乐团' }; |
41 | [MobClick event:@ '1002' attributes:dict]; |
46 | NSDictionary *dict = @{@ 'name' :@ '山楂树之恋' ,@ 'singer' :@ '徐千雅' }; |
47 | [MobClick event:@ '1003' attributes:dict]; |
56 | [UMSocialSnsService presentSnsIconSheetView:self appKey:APPKEY shareText:@ '这是测试用,你们不要理我' |
57 | shareImage:[UIImage imageNamed:@ '27.jpg' ] shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina, nil] delegate:self]; |
60 | - ( void )didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response |
62 | if (response.responseCode == UMSResponseCodeSuccess) |
64 | NSLog(@ 'share to sns name is %@' ,[[response.data allKeys]objectAtIndex:0]); |
65 | NSDictionary *dict = response.data; |
66 | NSString *sinaWbId = [NSString stringWithFormat:@ '%@' ,[[[[dict objectForKey:@ 'sina' ]objectForKey:@ 'data' ]objectForKey:@ 'send_result' ]objectForKey:@ 'id' ]]; |
67 | NSLog(@ 'weiboID:%@' ,sinaWbId); |
68 | MobClickSocialWeibo *weibo = [[MobClickSocialWeibo alloc]initWithPlatformType:MobClickSocialTypeSina weiboId:sinaWbId usid:nil param:nil]; |
69 | [MobClickSocialAnalytics postWeiboCounts:@[weibo] appKey:APPKEY topic:@ '这是测试用,你们不要理我' completion:^(NSDictionary *response, NSError *error) { |
70 | NSLog(@ '社交回调response:%@' ,response); |
76 | NSString *urlStr = [MobClick getAdURL]; |
78 | GGViewController *ggVC = [GGViewController new ]; |
79 | ggVC.urlString = urlStr; |
80 | [self.navigationController pushViewController:ggVC animated:YES]; |
83 | - ( void )viewWillAppear:( BOOL )animated{ |
84 | [super viewWillAppear:animated]; |
85 | [MobClick beginLogPageView:@ 'PageOne' ]; |
88 | - ( void )viewWillDisappear:( BOOL )animated{ |
89 | [super viewWillDisappear:animated]; |
90 | [MobClick endLogPageView:@ 'PageOne' ]; |
更多测试DEMO可以下载评测DEMO包查看
测试日志
使用统计SDK可以获取的终端信息:
获取在线参数配置:
社交分享统计:
遇到问题
1.进行统计的时候,网站的测试日志没有立即显示,原因是发送策略选择的是启动时发送,必须要在APP下次启动的时候才会发送统计的数据。
2.统计自定义事件,统计分析内的事件消息数为0,原因是笔者用的是测试设备,想要看到自定义事件消息,需要从管理内的集成测试历史日志看到。
上手难易
友盟统计iOS SDK集成简单,对于刚接触统计的,只需要参考快速开始文档就可以轻松集成,如果想要使用高级功能如:自定义事件,在线参数,就需要多研究一会官方文档。
开发文档
iOS版本的统计分析参考文档地址:
http://dev./analytics/ios/quick-start#1
统计分析使用指南:
http://dev./analytics/guide/functions/funnel
另外SDK下载的压缩包内也有API文档。
查看原文
|