高级功能
一、启动来源统计功能
1.1业务使用场景:
App运营可通过「渠道分析」回答用户为什么来,但无法掌握到用户从哪儿来、为什么回访,缺乏对全生命周期流量价值的完整评估,导致难以判断哪些入口真正驱动用户的持续活跃。
U-App「启动来源分析」功能,完整还原用户每一次打开App的真实路径,全面洞察活跃用户构成与留存表现
如需使用本功能,请启动参数上报API(handleSceneWillConnectWithOptions),可归因分享、push推送、应用商店、短信、第三方应用等场景来源,为业务效果评估提供数据支撑。上报时可参考以下类目说明:

1.2接口函数:
/** 进端采集
@param connectionOptions: UIScene模式下的启动参数
*/
+ (void)handleSceneWillConnectWithOptions:(id)connectionOptions;1.3参数:
参数 | 类型 | 描述 | 备注 |
connectionOptions | UISceneConnectionOptions | UIScene模式下的启动参数 |
1.4示例代码:
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
[UMConfigure handleSceneWillConnectWithOptions:connectionOptions];
}二、账号统计功能
设置上报用户上报后,在U-App中的应用及实践场景可参考文档:用户账号及用户属性
【友盟+】在统计用户时以设备为标准,如果需要统计应用自身的账号,可以使用此功能
2.1接口函数:
+ (void)profileSignInWithPUID:(NSString *)puid;
+ (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
+ (void)profileSignOff;2.2参数:
参数 | 类型 | 描述 | 备注 |
puid | NSString | 用户ID | |
provider | NSString | 账号来源 | 不能以下划线”_”开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。 |
2.3示例代码:
友盟+在统计用户时以设备为标准,若需要统计应用自身的账号,下述两种API任选其一接口:
// PUID:用户账号ID.长度小于64字节
// Provider:账号来源。不能以下划线"_"开头,使用大写字母和数字标识,长度小于32 字节 ;
[MobClick profileSignInWithPUID:@"UserID"];
[MobClick profileSignInWithPUID:@"UserID" provider:@"WB"];Signoff调用后,不再发送账号内容。
[MobClick profileSignOff];常见问题
[账号统计问题]
三、设置用户属性
可通过如下接口设置用户属性,同一个 key 多次设置时,value 值会进行覆盖替换
3.1接口函数:
/** 设置用户属性(自定义)
@param value : 用户属性值(NSString,NSNumber);
@param key : 用户属性键;
*/
+ (void)userProfile:(id)value to:(NSString *)key;
/** 设置用户属性(电话)
@param mobile : 电话;
*/
+ (void)userProfileMobile:(NSString *)mobile;
/** 设置用户属性(邮箱)
@param email : 邮箱;
*/
+ (void)userProfileEMail:(NSString *)email;用户属性设置一定要在账号统计调用后即profileSignInWithPUID:。
3.2参数:
参数 | 类型 | 描述 | 备注 |
key | NSString | 属性键 | 小于128字节,允许:英文([a-z;A-Z])、数字(0-9)、下划线 进行定义,使用其中一种或者几种都可以。 不允许:不能以“数字”、"_"开头 |
value | id | 属性值 | 小于256字节 |
3.3代码示例:
[MobClick userProfile:@"value" to:@"key"];四、页面统计功能
4.1页面统计两种方式对比

4.2集成方式
4.2.1AUTO模式
接口函数:
+ (void)setAutoPageEnabled:(BOOL)value;示例代码:
//设置为自动采集页面
[MobClick setAutoPageEnabled:YES];4.2.2MANUAL模式
接口函数:
+ (void)logPageView:(NSString *)pageName seconds:(int)seconds;
+ (void)beginLogPageView:(NSString *)pageName;
+ (void)endLogPageView:(NSString *)pageName;参数:
参数 | 类型 | 描述 | 备注 |
pageName | NSString | 统计的页面名称 | |
seconds | int | 时长 | 单位为秒 |
4.2.3注意:
必须配对调用beginLogPageView:和endLogPageView:两个函数来完成自动统计,若只调用某一个函数不会生成有效数据;
在该页面展示时调用beginLogPageView:,当退出该页面时调用endLogPageView。
示例代码:
在ViewController类的viewWillAppear: 和 viewWillDisappear:中配对调用如下方法:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[MobClick beginLogPageView:@"Pagename"]; //("Pagename"为页面名称,可自定义)
}- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[MobClick endLogPageView:@"Pagename"];
}您也可以根据您自己的业务场景,在viewDidAppear:和viewDidDisappear:等方法中配对调用beginLogPageView:和endLogPageView:两个函数来完成自动统计。
常见问题
[页面统计问题]
五、事件统计功能
自定义事件可以用于追踪用户行为,记录行为发生的具体细节。本文适用于不低于6.0.0版本的sdk(包含6.0.0版本),若您使用的sdk版本低于6.0.0,为便于您获取更好的产品使用,建议您先进行SDK升级。
5.1事件基本构成
event ID:自定义事件ID,指一个操作
例如:您可定义“pause”或“play”作为一个事件。您也可更加具体,创建一个“music_willbe_finished”的事件,并设定在音乐播放了 90% 的那一刻触发;友盟+提供了两种自定义事件的形式:多参数类型事件和计算事件。
key:自定义事件下的参数,一个可选的描述符,用于定义事件操作的属性信息
例如,您可以定义“music_style”或“singer_name”作为“play”事件的参数,也可以定义“play_time”作为事件的参数。
value:自定义事件参数下的参数值,用于描述事件属性的详细信息。
例如,“play”事件下“music_style”的参数值可以是“slight”、“rock”等。数值型参数的取值是数字变量。值可以是明确的数字,如“23”;也可以是在其他位置定义的基于推断值的变量,如“downloadTime”。
5.2使用自定义事件的依赖条件与限制
请先登陆 【友盟+】官网 ,进入选择“应用”->设置->事件 (子账户由于权限限制可能无法看到”设置”选项,请联系主账号开通权限。)页面中添加相应的事件ID,然后服务器才会对相应的事件请求进行处理;
在页面注册事件类型时请选择“多参数类型事件”类型;
自定义事件ID不可更改,需与代码中“String event_id”保持一致,参数(key)无须手动注册;
请在SDK初始化之后调用事件统计接口;
如果需要在子进程中对自定义事件进行统计,需要在SDK初始化完成后调用函数UMConfigure.setProcessEvent。
event ID或者key请使用英文、数字、下划线、中划线及加号进行定义,使用其中一种或者几种都可以,不能以“数字”开头,避免使用中文。为保证数据计算的准确性,非这些“合法”以外的字符无法添加,具体限制请查看下文注意事项;
不同版本下,自定义事件数量
功能/版本
免费版
专业版
尊享版
自定义事件量(个)
100
500
2000
事件参数量(个)
50
200
200
事件参数值量(个)
1000
2000
5000
为方便使用者理解及使用,可通过显示名称进行重命名(支持中文),进入【应用设置-事件-编辑】进行操作;
埋码完成后,建议使用集成测试进行验证;
5.3注意事项
event id长度不能超过128个字节,key不能超过128个字节,value不能超过256个字节
id、ts、du、token、device_name、device_model 、device_brand、country、city、channel、province、appkey、app_version、access、launch、pre_app_version、terminate、no_first_pay、is_newpayer、first_pay_at、first_pay_level、first_pay_source、first_pay_user_level、first_pay_versio是保留字段,不能作为event id 及key的名称
5.4多参数类型事件
在您希望跟踪的代码部分,调用如下方法:
复制代码到剪切板
+ (void)event:(NSString *)eventId;
+ (void)event:(NSString *)eventId label:(NSString *)label;
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;参数 | 类型 | 描述 | 备注 |
eventId | NSString | 网站上注册的事件Id | 无 |
label | NSString | 分类标签 | 不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签。 |
attributes | NSDictionary | 自定义属性 | 属性中的key-value必须为String类型, 每个应用至多添加500个自定义事件,key不能超过100个。 |
counter | int | 自定义数值 | 无 |
示例1:
统计微博应用中”转发”事件发生的次数,那么在转发的函数里调用:
复制代码到剪切板
[MobClick event:@"Forward"];示例2:
统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:
复制代码到剪切板
NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
[MobClick event:@"purchase" attributes:dict];5.5计算事件
统计一个数值类型的连续变量(该变量必须为整数),用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:
复制代码到剪切板
字符串型:
+ (void)beginEvent:(NSString *)eventId;
+ (void)endEvent:(NSString *)eventId;
+ (void)beginEvent:(NSString *)eventId label:(NSString *)label;
+ (void)endEvent:(NSString *)eventId label:(NSString *)label;
+ (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
+ (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
+ (void)event:(NSString *)eventId durations:(int)millisecond;
+ (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;数值型:
+ (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;参数 | 类型 | 描述 | 备注 |
eventId | NSString | 网站上注册的事件Id | |
label | NSString | 分类标签 | 不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签。 |
attributes | NSDictionary | 自定义属性 | 属性中的key-value必须为String类型, 每个应用至多添加500个自定义事件,key不能超过100个 。 |
primarykey | NSString | 唯一标识 | 这个参数用于和event_id一起标示一个唯一事件,并不会被统计;对于同一个事件在beginEvent和endEvent 中要传递相同的eventId 和 primarykey。 |
durations | int | 时长 | 传入自己统计的时长(单位:毫秒)。 |
注意:
beginEvent需要和endEvent配对使用,需要传入相同的eventId。
示例:
购买《Swift Fundamentals》这本书,花了110元
复制代码到剪切板
[MobClick event:@"pay" attributes:@{@"book" : @"Swift Fundamentals"} counter:110]FAQ
六、稳定性功能
稳定性模块再次升级,独立为应用性能监控产品,新增用户细查、崩溃回调等多种功能。
产品介绍文档为:https://developer.umeng.com/docs/193624/detail/194565
6.1历史文档
从SDK版本7.2.0以上已经关闭了老版本的错误统计(OC层异常捕获),新版错误统计(稳定性)支持采集OC层、Swift层和Cpp层的异常捕获,提供用户崩溃时的行为分析功能。
6.1.1崩溃采集
如果您使用的是7.2.0以上版本SDK,同时集成使用了UMCrash.framework插件,则默认开启新版本的稳定性功能
请务必在工程中引入 UMCrash.framework 增加系统库 libc++.tbd Targets->BuildSettings 中 , Other Linker Flags增加-ObjC,⼀定要添加此项,注意是⼤写C,不是⼩写c
CoreTelephony.framework 获取运营商标识
libz.tbd 数据压缩
libsqlite.tbd 数据缓存
libc++.tbd 异常捕获
SystemConfiguration.framework 判断网络状态6.1.2Crash Log查看
新版本查看Crash Log,需要断开Xcode调试,,然后打开控制台,看iPhone日志,当App产生crash后再启动会发送。在Log中会有Crash Log Start 和Crash Log End中间就是上次产生的crash。
6.1.3注意事项
统计SDK 7.2.0及以上版本(含7.2.0)已经关闭了老版本的错误统计(OC层异常捕获)功能,如果您想继续使用错误统计(OC)功能,请集成并使用UMCrash.framework稳定性组件,该组件提供更全面、更强大的异常捕获功能。
原错误统计的开关接口【+ (void)setCrashReportEnabled:(BOOL)value;】方法去除
原错误回调接口【+ (void)setCrashCBBlock:(CallbackBlock)cbBlock;】 方法移至UMCrash.framework中的UMCrashConfigure中
如果想测试稳定性是否集成成功,可以下载demo验证,具体可以看文档:https://developer.umeng.com/docs/119267/detail/176778
错误统计功能用于收集app使用过程中产生的Crash信息,目前稳定性收集到的错误会向下传递,不会影响其他SDK收集或自己收集崩溃信息。
6.1.4常见问题
七、设置加密功能
此功能用于设置是否对要发送的统计信息进行加密 详细文档
接口:
/** 设置是否对统计信息进行加密传输, 默认NO(不加密).
@param value 设置为YES, umeng SDK 会将日志信息做加密处理
*/
+ (void)setEncryptEnabled:(BOOL)value;示例代码:
#import <UMCommon/UMCommon.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[UMConfigure setEncryptEnabled:YES];//打开加密传输
[UMConfigure setLogEnabled:YES];//设置打开日志
[UMConfigure initWith
:@"Your AppKey" channel:@"App Store"];
}