1.集成准备
1.1 获得Appkey
集成友盟SDK之前,您首先需要到友盟官网 注册并且添加新应用,获得Appkey
不同平台的应用禁止使用相同的Appkey,友盟后台的应用名与实际应用名和包名无关,建议命名为“应用名+平台”。
1.2 下载
下载统计sdk Analytics-iOS-SDK.zip并解压缩
1.3 导入SDK
请在你的工程目录结构中,右键选择Add->Existing Files…
,选择文件 libMobClickLibrary.a
MobClick.h
。或者将这两个文件拖入XCode工程目录结构中,在弹出的界面中勾选Copy items into destination group's folder(if needed)
, 并确保Add To Targets
勾选相应的target。
添加依赖框架(Framework
)和编译器选项
TARGETS
-->Build Phases
-->Link Binary With Libraries
--> +
-->libz.dylib
如果是从老版本友盟SDK( < 1.6.8 )升级过来,other linker flag里有-all_load -ObjC的话也最好一并去掉,友盟SDK已经不需要这两个参数了
*使用 Cocoapods 安装 SDK*
Cocoapods 是一个很好的依赖管理工具,推荐参考官方文档《CocoaPods 安装和使用教程》。如需要在Cocoapods中使用友盟统计SDK,请参考下面的流程:
1. Cocoapods 安装完成后,在你的项目根目录创建一个 Podfile 文件,添加如下内容:
pod 'UMengAnalytics'//标准SDK,含IDFA
pod 'UMengAnalytics-NO-IDFA'//无IDFA版SDK(请根据需要选择)
2. 在terminal下运行命令如下:
pod install
命令执行完成后即可完成统计SDK的下载安装。
2.基本功能集成
2.1 配置*AppDelegate.m
(*代表你的工程名字)
AppDelegate.m
的配置主要包括填写Appkey,设置发送策略和填写渠道id三部分,代码示例如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[MobClick startWithAppkey:@"xxxxxxxxxxxxxxx" reportPolicy:BATCH channelId:@"Web"];
}
2.1.1 appkey填写
将startWithAppkey:@"xxxxxxxxxxxxxxx"
中的xxxxxxxxxxxxxxx
替换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 统计分析->设置->应用信息 页面查看)。
2.1.2 channel填写
将channelId:@"Web"
中的Web
替换为您应用的推广渠道。channelId
为nil
或@""
时,默认会被当作@"App Store"
渠道。
您可以使用20位以内的英文和数字为渠道定名(不建议使用中文),在您查看数据时,渠道会作为一个数据细分的维度。
非常重要:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道的时候,请使用不同的设备来分别测试。
☺ 渠道统计使用中的问题请参见友盟开发者社区:友盟渠道统计使用的那些事儿
2.1.3 设置发送策略
发送策略定义了用户由统计分析SDK产生的数据发送回友盟服务器的频率。
iOS平台数据发送策略包括BATCH(启动时发送)和SEND_INTERVAL(按间隔发送)两种,友盟默认使用启动时发送(更省流量),您可以在代码reportPolicy:BATCH
中更改发送策略。
启动时发送:新增、活跃、启动次数等数据在APP本次打开时即刻发送,使用时长、自定义事件等在使用过程中产生的所有消息数据都在下次启动应用时发送。如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。
按间隔发送:新增、活跃、启动次数等数据在APP本次打开时即刻发送,使用时长、自定义事件等在使用过程中产生的所有数据都按间隔发送,如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。按间隔发送的间隔时长介于90秒与1天之间,您可以在后台 统计分析->设置->发送策略 页面自定义发送间隔。
☺启动和使用时长统计的相关问题请参见友盟开发者社区:友盟启动次数的统计原理 单次使用时长的统计原理
2.1.4 version标识
以App打包时的Build号作为应用程序的版本标识,不能通过友盟SDK或友盟后台配置。
友盟SDK为了兼容Xcode3的工程,默认取的是Build号,如果需要取Xcode4及以上版本的Version,可以使用下面的方法;
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
[MobClick setAppVersion:version];
2.2 页面的统计
页面统计集成正确,才能够获取正确的页面访问路径、访问深度(PV)的数据。
实现页面的统计需要在每个View中配对调用如下方法:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[MobClick beginLogPageView:@"PageOne"];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[MobClick endLogPageView:@"PageOne"];
}
非常重要:页面访问路径页面的数据为抽样统计(抽样比例为所有log的3%),数据量达到一定程度才会在后台展示,若您希望查看测试数据,请使用集成测试服务 ,了解更多集成测试请点击这里 。
到此,基本统计功能集成已经完成。
1.行为的统计:自定义事件
自定义事件可以实现在应用程序中埋点来统计用户的点击行为。自定义事件目前包括“计数事件”和“计算事件”,二者的区别以及详细说明请点击这里
☺自定义事件使用中的问题请参见友盟开发者社区:自定义事件常见问题
1.1使用自定义事件的依赖条件
使用自定义事件功能请先登陆友盟官网 , 在:统计分析->设置->事件 页面中添加相应的事件id(事件id可用英文或数字,不建议使用中文),然后服务器才会对相应的事件请求进行处理。
1.2 计数事件
使用计数事件需要在后台添加事件时选择“计数事件”。
1.2.1统计发生次数
在您希望跟踪的代码部分,调用如下方法:
[MobClick event:(NSString *)eventId];
eventId
为当前统计的事件ID。
示例:统计微博应用中"转发"事件发生的次数,那么在转发的函数里调用
[MobClick event:@"Forward"];
1.2.2 统计点击行为各属性被触发的次数
考虑事件在不同属性上的取值,可以调用如下方法:
[MobClick event:(NSString *)eventId attributes:(NSDictionary *)attributes];
attributes
为当前事件的属性和取值(键值对)。
示例:统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:
NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
[MobClick event:@"purchase" attributes:dict];
1.3 计算事件
使用计算事件需要在后台添加事件时选择“计算事件”。
1.3.1 统计数值型变量的值的分布
统计一个数值类型的连续变量(该变量必须为整数),用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:
+[MobClick event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number];
示例:购买《Swift Fundamentals》这本书,花了110元
[MobClick event:@"pay" attributes:@{@"book" : @"Swift Fundamentals"} counter:110];
如果您使用的是V3.1.2以下版本的SDK,请使用下面的方法
-(void)umengEvent:(NSString *)eventId attributes:(NSDictionary *)attributes number:(NSNumber *)number{
NSString *numberKey = @"__ct__";
NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:attributes];
[mutableDictionary setObject:[number stringValue] forKey:numberKey];
[MobClick event:eventId attributes:mutableDictionary];
}
示例:购买《Swift Fundamentals》这本书,花了110元
[self umengEvent:@"pay" attributes:@{@"book" : @"Swift Fundamentals"} number:@(110)];
1.3.2 统计点击次数及各属性触发次数
计算事件除能够统计数值型的参数外还具有计数事件的所有功能。详细说明 。
1.4注意事项
- event_id 和 tag 不能使用特殊字符,不建议使用中文,且长度不能超过128个字节;map中的key和value 都不能使用特殊字符,key 不能超过128个字节,value 不能超过256个字节
- id, ts, du是保留字段,不能作为eventId及key的名称。
- 每个应用至多添加500个自定义事件,每个event 的 key不能超过10个,每个key的取值不能超过1000个(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。 如有任何问题,请联系技术支持qq: 800083942。
2.在线参数
在线参数使您可以在网站上动态配置预设好的参数的参数值。例如: 动态修改应用的欢迎语,修改应用中开关选项的"on"或"off",以及类似游戏中虚拟物品的价格等。
您需要在[MobClick startWithAppkey:@"xxxxxxxxxxxxxxx"];
之后添加
[MobClick updateOnlineConfig];
在线参数需要在网站编辑,在程序中使用这句代码从服务器获取参数,并缓存本地。 当在项目里需要获取某个具体参数时调用
[MobClick getConfigParams:@"xxxx"];
xxxx为友盟服务器上事先设置好的参数id。如果你想获取所有的在线参数,请使用.
[MobClick getConfigParams];
这两个方法都是从[NSUserDefaults standardUserDefaults]
获取缓存的值, 所以上面的[MobClick updateOnlineConfig]
方法要先在app启动时被调用。
注意: updateOnlineConfig
建议放在 application:didFinishLaunchingWithOptions:
里执行,这样可以尽早获取参数数据。 updateOnlineConfig
在前后台切换时是不会执行的,如果需要在前后台切换时更新在线参数,可以在相关回调里执行updateOnlineConfig
。
如果您需要知道在线参数何时获取完毕,可以监听 UMOnlineConfigDidFinishedNotification
,当这个通知发生时,最新的在线参数会传递给notification.userInfo
。
您可以用类似下面的代码来完成这个过程:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onlineConfigCallBack:) name:UMOnlineConfigDidFinishedNotification object:nil];
- (void)onlineConfigCallBack:(NSNotification *)notification {
NSLog(@"online config has fininshed and params = %@", notification.userInfo);
}
最后别忘记调用removeObserver:name:object:
删除这个监听。
3.错误分析
友盟iOS统计SDK默认自带错误分析功能,不需要开发者手动调用。如果开发者自己做了错误捕捉,可以调用下面方法关闭友盟的错误统计:
[MobClick setCrashReportEnabled:NO];
☺错误统计中的问题请参见友盟开发者社区:友盟错误分析常见问题汇总
4.社交统计
友盟社交统计SDK可以非常详尽地统计应用中发生的各种社交行为。
如果您自己实现了分享功能,也不想切换到友盟的社会化组件,但是想使用友盟的社交统计功能,您可以采用这个非常轻量级的SDK,只需要调用一行代码,便可享用到丰富的社交行为和社交用户分析报表。
4.1 准备社交数据
在你需要使用社交统计的文件里引用如下头文件
#import "MobClickSocialAnalytics.h"
以微博平台为例,当你发送微博完成之后把微博类型、拿到的微博id、用户id等字段进行初始化,例如下面的写法
MobClickSocialWeibo *weibo=[[MobClickSocialWeibo alloc] initWithPlatformType:@"sina" weiboId:@"1234" usid:@"67890" param:nil];
4.2 发送社交数据
以微博平台为例,把微博数据发送到友盟服务器,使用如下的方法:
[MobClickSocialAnalytics postWeiboCounts:@[weibo] appKey:UMENG_APPKEY topic:@"NICE DAY" completion:nil];
将UMENG_APPKEY
替换为您在友盟后台申请得到的Appkey。
至此,您的社交统计功能集成完毕,可以登录友盟官网 在统计分析->社会化分享 页面查看统计报表。
4.3 方法说明
以微博平台为例,在你发送微博完成之后调用微博初始化方法
-(id)initWithPlatformType:(MobClickSocialTypeString)platformType weiboId:(NSString *)weiboId usid:(NSString *)usid param:(NSDictionary *)param;
形参 | 说明 |
---|---|
platformType | 微博平台名 |
weiboId | 发送微博完成后,得到的微博id,可以设置为nil |
usid | 微博的用户id,可以设置为nil |
param | 微博相关参数,可以设置为nil |
发送微博数据的方法
+(void)postWeiboCounts:(NSArray *)weibos appKey:(NSString *)appKey topic:(NSString *)topic completion:(MobClickSocialAnalyticsCompletion)completion;
形参 | 说明 |
---|---|
weibos | 要统计的微博数组 |
appKey | 友盟appkey |
topic | 话题,或者是你发送微博内容,可以设置为nil |
completion | 回调Block对象,可以设置为nil |
回调方法的使用
例如传入下面的回调对象:
MobClickSocialAnalyticsCompletion completion = ^(NSDictionary *result, NSError *error) {
NSLog(@"result is %@",result);
//result里面包含分别为key为st、msg、data,分别代表错误码、错误描述、返回数据
//error代表网络连接等错误
};
5.获取广告URL(防止被AppStore审核拒绝)
从14年2月初开始,Apple开始拒绝采集了IDFA(identifier for advertising)但是未集成任何广告服务的应用进入AppStore。
IDFA能够较精准的识别用户,尤其对于广告主追踪广告转化率提供了很大帮助。采集IDFA可以最大程度的保证您数据的稳定性和一致性。
如果您的应用未集成任何广告服务同时又希望采集IDFA,那么您可以使用我们为您提供的一个默认广告页面来防止审核被拒(使用此功能的前提是要先使用 集成测试 ),当您的应用在AppStore审核通过后,请在友盟后台 管理->应用管理->内置广告开关 页面将该应用的内置广告开关关闭。 使用了集成测试 后,您可以在后台看到如下页面:
调用如下方法获取广告URL,然后需要您自己用UIWebView来展示:
+ (NSString *)[MobClick getAdURL];
注意:
1. 此方法为同步方法,尽量避免在-[AppDelegate application:didFinishLaunchingWithOptions:]
中调用。
2. 请务必使用 集成测试 服务来测试您的应用以打开广告开关页面,了解更多集成测试请点击这里 。
3.由于Appstore拒绝含有应用推荐类广告的应用上架,因此友盟将临时广告由原来的“应用推荐”更换为“爱淘宝”,请各位开发者准确描述UIWebView的Title(如“广告”、“精彩推荐”、“爱淘宝”),防止因Title与广告内容不符被Appstore拒绝。