本文档指导开发者完成阿里云崩溃分析iOS SDK的接入配置,包含SDK启动、功能验证等核心流程。
一、前提条件
二、接入步骤
1. 添加SDK依赖
创建/修改Podfile:
source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/aliyun/aliyun-specs.git' platform :ios, '12.0' use_frameworks! target 'YourTarget' do pod 'AlicloudApmCrashAnalysis', '~> 2.0.0' end
在Xcode项目的根目录中,定位并编辑Podfile文件,以添加AlicloudApmCrashAnalysis依赖项(执行
pod search AlicloudApmCrashAnalysis
命令,查询其最新版本)。如果根目录中没有Podfile文件,可以通过在终端中运行pod init
命令来创建一个新的Podfile。如果您的计算机上尚未安装CocoaPods,请先参考CocoaPods官网完成安装。执行安装命令:
pod repo update AliyunRepo pod install # 如果您尚未添加阿里云Cocoapods仓库,请先执行以下命令添加仓库 # pod repo add AliyunRepo https://github.com/aliyun/aliyun-specs.git
参考快速入门文档下载最新SDK包
解压并添加Framework:
将
AlicloudUTDID.xcframework
、AlicloudApmCore.xcframework
和AlicloudApmCrashAnalysis.xcframework
拖入工程。详细操作步骤如下图所示。
打开Build Phases > Link Binary With Libraries,添加Xcode自带的公共包文件:
libc++.tbd
libz.tbd
CoreTelephony.framework
依赖说明
版本2.0.0及以上:
包含AlicloudUTDID、AlicloudApmCore 和 AlicloudApmCrashAnalysis 三个依赖库。
版本2.0.0以下:
请联系技术支持
Xcode兼容性
使用较低版本的 Xcode 时,可能需要手动添加以下系统库以确保兼容性:
libz.tbd
CoreTelephony.framework
SystemConfiguration.framework
链接设置
如果在运行时遇到问题,可以尝试在以下位置添加 -ObjC 参数:
打开项目设置。
导航到 TARGETS。
选择 Build Settings。
找到 Linking 部分。
在 Other Linker Flags 中添加 -ObjC。
2. SDK初始化
在AppDelegate
中完成初始化。示例代码如下:
#import "AlicloudApmCore/AlicloudApmCore.h"
#import "AlicloudApmCrashAnalysis/AlicloudApmCrashAnalysis.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
EAPMOptions *options = [[EAPMOptions alloc] initWithAppKey:@"您的AppKey"
appSecret:@"您的AppSecret"
sdkComponents:@[[EAPMCrashAnalysis class]]];
[EAPMApm startWithOptions:options];
return YES;
}
@end
如果是App Extension接入SDK,尽量将SDK初始化代码放在Extension启动时执行,避免延迟和性能问题,下面是Share Extension的样例代码
#import "AlicloudApmCore/AlicloudApmCore.h"
#import "AlicloudApmCrashAnalysis/AlicloudApmCrashAnalysis.h"
@implementation ShareViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self startApm];
}
- (void)startApm {
EAPMOptions *options = [[EAPMOptions alloc] initWithAppKey:@"您的AppKey"
appSecret:@"您的AppSecret"
sdkComponents:@[[EAPMCrashAnalysis class]]];
[EAPMApm startWithOptions:options];
}
@end
参数 | 说明 |
参数 | 说明 |
appKey | 用于指定App的AppKey。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
appSecret | 用于指定App的AppSecret。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
sdkComponents | 用于指定APM SDK加载的业务组件,崩溃分析对应的参数是[EAPMCrashAnalysis class] 【数据类型】数组 【是否必选】是 【是否可为空】否 【默认值】无 |
userId | 用于设置用户ID,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 【数据类型】字符串 【取值范围】128 【是否必选】否 【是否可为空】是 【默认值】无 【命名规范】自定义 |
userNick | 用于指定用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 【数据类型】字符串 【取值范围】128 【是否必选】是 【是否可为空】否 【默认值】无 【命名规范】自定义 |
channel | 用于指定渠道标识,上报至服务端,进行渠道区分。 【数据类型】字符串 【取值范围】128 【是否必选】是 【是否可为空】否 【默认值】无 |
3 添加高级设置
iOS SDK提供接口,用于上报自定义日志、维度、错误对象。
// 上报自定义维度
[[EAPMCrashAnalysis crashAnalysis] setCustomValue:@"value" forKey:@"key"];
// 上报自定义日志
[[EAPMCrashAnalysis crashAnalysis] logWithFormat:@"This is my custom_value=%@", @"custom_value"];
// 上报自定义错误
NSError *error = [NSError errorWithDomain:@"customError" code:10001 userInfo:@{@"errorInfoKey":@"errorInfoValue"}];
[[EAPMCrashAnalysis crashAnalysis] recordError:error];
具体说明请参见自定义异常信息接口。
4 编译
执行编译。
编译过程中如出现
duplicate symbol
类型错误,确认本地依赖与CocoaPods管理的依赖是否重复;如是,则删除本地依赖。如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法参见:SDK UTDID冲突解决方案。
5 功能验证
iOS SDK接入操作完成后,需进行功能验证。
编写测试代码,模拟/触发移动端崩溃。例如:
NSMutableArray *array = @[];
[array addObject:nil]; // crash
更多内容参考样例代码。
在真机或模拟器上运行应用后,请查看Xcode控制台输出,检查是否有类似以下日志信息:
[AlicloudApmCore] Started Successfully [AlicloudApmSetting] Fetched Successfully
此日志表明SDK已成功启动,并且拉取配置成功。
重启移动端大概2分钟后在控制台查看是否显示崩溃信息。
崩溃数据从采集到上传到控制台显示,存在大约2~3分钟延迟。
显示崩溃数据:SDK接入成功
数据未显示:请联系技术支持解决。
三、扩展资料
崩溃分析服务iOS SDK接入工程样例请参见Demo工程。
- 本页导读 (0)
- 一、前提条件
- 二、接入步骤
- 1. 添加SDK依赖
- 2. SDK初始化
- 3 添加高级设置
- 4 编译
- 5 功能验证
- 三、扩展资料