跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

错误分析升级到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  判断网络状态

工程配置

  1. 选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommon.framework,UMDevice.framework,UMAPM.framework等)。

  2. XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)apm1apm2

  3. 添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries如下:apm3

  4. 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为空的话,打印日志如下图:

UMCommLog_invalidAppkeyLog
  • 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. 新建桥接头文件

1.该文件在第一次创建Swift文件时会提示创建该文件,选择创建。
2.该文件可以手动创建, 选择Header File文件创建
桥接命名格式为 工程名-Bridging-Header.h
截屏2021-05-14 上午10

2. 配置信息

将桥接文件路径拷到Objective-C Bridging Header 里
设置Precompile Bridging Header 为Yes

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@“崩溃时自定义字符串”;
}];

上传后即可在错误详情-自定义字段中查看到回调信息hknv

符号表

具体符号表说明,请见 点我了解

用户细查

如您使用用户细查功能,需要接入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  判断网络状态

常见问题

如何设置符号

[为什么会出现捕获不到/其他三方SDK捕获比UAPM多/接入UAPM后其他三方捕获变少?]

基础组件库及统计库更新日志

点击查看