错误分析升级到U-APM
曾使用友盟+移动统计分析中的错误分析/稳定性功能的用户在升级SDK时需要阅读下面的内容,一定要接入U-APM的SDK,否则crash数据不会上报哦!
U-APM 是2020年12月中旬 从 U-App 错误分析/稳定性模块中独立并升级为 应用性能监控平台 U-APM。
U-APM 升级后在功能上增加了:崩溃回调、用户细查、云真机、卡顿分析、智能告警等能力,支持Swift、Objective-C崩溃采集。
新功能需要搭配最新的U-APM SDK ,推荐您使用iOS APM SDK 版本号大于等于1.2.1 且基础组件库需要大于7.2.6.由于您曾集成U-App,因此需要完成如下整体升级,并增加 APM 的SDK
最新SDK 集成方式
*U-APM推荐在国内发行的APP上使用,我们持续更新优化SDK,提供APP性能监控产品。
*如您需要应用在海外应用市场,请您通过工单提交申请,申请入口
Cocoapods自动集成(推荐)
更新Pod环境
在终端执行pod setup命令,拉取最新pod库时间较长。
$ pod setup集成组件化各业务SDK
Cocoapods集成友盟+可灵活配置所需SDK,如工程target名为UMPlusDemo,可选添下面的SDK,如在项目根目录的Podfile的格式:
target 'UMPlusDemo'do
pod ‘<友盟+SDK名>'
end升级说明:如果现有项目已经通过 Pod 集成过友盟相关SDK,需要检查替换相关 Pod 名,参考页面最后一节「较早Cocoapods集成版本升级说明」进行相应 Pod 替换。
由于 pod search 命令对新增项目可能出现无法找到的情况,建议直接使用 pod update 命令进行直接更新。
pod search的解决方案请在本页最后[常见问题]中查看
基础库
pod 'UMCommon'
pod 'UMDevice'可在项目中加入 “基础库-日志库” 中的 UMCCommonLog 进行开发调试。
APM库
实现APM相关功能,如稳定性分析等
pod 'UMAPM'日志库(调试)
开发阶段进行调试SDK及相关功能使用,可在发布 App 前移除
pod 'UMCCommonLog'手动集成
依赖库
CoreTelephony.framework 获取运营商标识
libz.tbd 数据压缩
libsqlite.tbd 数据缓存
libc++.tbd 异常捕获
SystemConfiguration.framework 判断网络状态工程配置
选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommon.framework,UMDevice.framework,UMAPM.framework等)。
Xcode
File—>Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)

添加依赖库,在项目设置
target-> 选项卡General->Linked Frameworks and Libraries如下:
Targets->BuildSettings 中 , Other Linker Flags增加-ObjC,⼀定要添加此项,注意是⼤写C,不是⼩写c。
初始化
我们强烈建议您仅使用一款错误及性能捕获SDK(U-APM),多款错误捕获SDK可能存在彼此拦截干扰及对您终端用户性能影响。
如果您因为特殊需要集成多个SDK,请后初始化友盟+的 iOS U-APM SDK。
1.说明和用途
组件化SDK用来聚合(移动统计 SDK,消息推送 SDK,社会化分享 SDK等)业务的初始化接口,方便对各个业务的初始化统一调用。
2.接口函数
接口:
/** 初始化友盟所有组件产品
@param appKey 开发者在友盟官网申请的appkey.
@param channel 渠道标识,可设置nil表示"App Store".
*/
+(void)initWithAppkey:(NSString*)appKey channel:(NSString*)channel;参数:
参数 | 类型 | 描述 | 备注 |
|---|---|---|---|
appKey | NSString | 在 App Analytics 创建应用后,进入数据报表页中, 在“统计分析->设置->应用信息” 页面查看。 | AppKey为必需,为了根据您的AppKey查看后台的实时和离线统计数据,帮助您了解目前您的产品的详细情况。 |
channel | NSString | channel为您应用的推广渠道。channel为nil或@””时,默认会被当作@”App Store”渠道 | 渠道命名规范:可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。 首尾字符不可以为空格 最多256个字符 “App Store” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名。 |
提示每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试请点击这里。
3.示例代码
#import <UMCommon/UMCommon.h>
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[UMConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];
}设置日志
1.说明和用途
设置是否在console输出sdk的log信息。详细集成
2.接口函数
接口:
/** 设置是否在console输出SDK的log信息.
@param bFlag 默认NO(不输出log); 设置为YES, 输出可供调试参考的log信息. 发布产品时必须设置为NO.
*/
+(void)setLogEnabled:(BOOL)bFlag;注意:在统计iOS SDK7.2.0及以上版本查看Crash Log时,需要断开Xcode调试,然后打开控制台,看iPhone日志,当App产生crash后再启动会发送。在Log中会有Crash Log Start 和Crash Log End中间就是上次产生的crash。
日志格式如下:
举例:如果用户传入的AppKey为空的话,打印日志如下图:

2018-02-08 20:19:44: 指当前的打印的时间;
UMengCommon: 指组件化SDK(UMCommon.framework)的名字;
<1.4.3>: 指组件化SDK(UMCommon.framework)的版本号;
(Error): 指日志等级是Error的日志;
[CIE10001]: 指日志的FAQ的代号,也可通过FAQ文档找到对应的解决方法;
用户传入的AppKey不合法,请到官网申请AppKey,以免影响自己App的统计数据。: 指提示开发者的错误信息,帮助开发者找到错误原因。
3.示例代码
#import <UMCommonLog/UMCommonLogHeaders.h>
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
// Override point for customization after application launch.
//开发者需要显式的调用此函数,日志系统才能工作
[UMCommonLogManager setUpUMCommonLogManager];
}Swift集成
[[Swift调用Objective-C需要建立一个桥接头文件进行交互 具体使用可参考|| Swift Demo]]
1. 新建桥接头文件

2. 配置信息
3. 导入桥接头文件
在工程名-Bridging-Header.h中加入相应业务SDK的头文件
代码实例
//导入UMCommon的OC的头文件
#import <UMCommon/UMCommon.h>
//导入UMCommonLog的OC的头文件 如果需要加入日志库 把此注释打开
//#import <UMCommonLog/UMCommonLogManager.h>导入相对业务桥接文件

崩溃分析
通用崩溃
如您完成common和apm插件集成,完成初始化即可使用崩溃分析功能。
崩溃回调(自定义字段)
当崩溃发生时,您可以通过此回调回调到您的业务逻辑,该接口返回string类型数据,该返回的数据会写入到崩溃文件中并上传到服务器展示。崩溃回调的限制为256个字符
回调接口:
//return字符串不能大于256字节,大于部分将被截取
+(void)setCrashCBBlock:(CallbackBlock_Nullable)cbBlock;接口示例:
[UMCrashConfigure setCrashCBBlock:^NSString*_Nullable{
return@“崩溃时自定义字符串”;
}];上传后即可在错误详情-自定义字段中查看到回调信息
符号表
具体符号表说明,请见 点我了解
用户细查
如您使用用户细查功能,需要接入U-App并完成账号统计接口的接入,即可在稳定性中按照账号id方式查询发生崩溃的账号错误详情。接入文档
自定义版本号
使用该功能,请务必U-APM SDK 在1.4.2及以上,且务必搭配Common SDK 版本7.3.5及以上
自UMAPM.framework(含1.3.1)开始支持子版本功能,方便用户自定义子版本号功能。
API
需要在初始化appkey之前调用
/**
* 设置自定义版本号和build版本号即子版本号 (需要在初始化appkey方法之前调用)
*/
+ (void)setAppVersion:( NSString * __nonnull )appVersion buildVersion:(NSString* __nullable)buildVersion;参数 | 类型 | 备注 |
appVersion | NSString | 主版本号,不能大于128个字符 |
buildVersion | NSString | 子版本号,不能大于128个字符 |
示例
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[UMCrashConfigure setAppVersion:@"2.0" buildVersion:@"3"];
[UMConfigure initWithAppkey:@"5fb6009173749c24fd9cb357" channel:@"App Store"];
}集成测试
具体测试操作请点击查看
注意事项
统计SDK 7.2.0及以上版本(含7.2.0)已经关闭了老版本的错误统计(OC层异常捕获)功能,如果您想继续使用错误统计(OC)功能,请集成并使用UMAPM.framework稳定性组件,该组件提供更全面、更强大的异常捕获功能。
原错误统计的开关接口【+ (void)setCrashReportEnabled:(BOOL)value;】方法去除
原错误回调接口【+ (void)setCrashCBBlock:(CallbackBlock _Nullable )cbBlock;】 方法移至UMAPM.framework中的UMCrashConfigure中
如果想测试稳定性是否集成成功,可以下载demo验证,具体可以看文档:https://developer.umeng.com/docs/119267/detail/176778
错误统计功能用于收集app使用过程中产生的Crash信息,目前稳定性收集到的错误会向下传递,不会影响其他SDK收集或自己收集崩溃信息。Crash Log查看
U-APM iOS SDK版本 1.2.1及以上支持开启bitcode
历史文档
从SDK版本7.2.0以上已经关闭了老版本的错误统计(OC层异常捕获),新版错误统计(稳定性)支持采集OC层、Swift层和Cpp层的异常捕获,提供用户崩溃时的行为分析功能。
崩溃采集
如果您使用的是7.2.0-7.2.4版本SDK,同时集成使用了UMCrash.framework插件,则默认开启新版本的稳定性功能如果您使用的是7.2.5版本及以上SDK,应删除UMCrash.framework插件,改用UMAPM.framework插件,则默认开启新版本的稳定性功能
请务必在工程中引入 UMAPM.framework 增加系统库 libc++.tbd Targets->BuildSettings 中 , Other Linker Flags增加-ObjC,⼀定要添加此项,注意是⼤写C,不是⼩写c
CoreTelephony.framework 获取运营商标识
libz.tbd 数据压缩
libsqlite.tbd 数据缓存
libc++.tbd 异常捕获
SystemConfiguration.framework 判断网络状态