iOS SDK接入

更新时间:2025-03-11 12:28:03

本文档指导开发者完成阿里云崩溃分析iOS SDK的接入配置,包含SDK启动、功能验证等核心流程。

一、前提条件

  • 已完成EMAS应用创建并获取凭证

  • 开发环境要求

    • Xcode 12.0+

    • iOS 10.0+

    • CocoaPods 1.12.0+

二、接入步骤

1. 添加SDK依赖

方式一:Cocoapods集成(推荐)
方式二:手动集成
  1. 创建/修改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官网完成安装。

  2. 执行安装命令:

    pod repo update AliyunRepo
    pod install
    
    # 如果您尚未添加阿里云Cocoapods仓库,请先执行以下命令添加仓库
    # pod repo add AliyunRepo https://github.com/aliyun/aliyun-specs.git
  1. 参考快速入门文档下载最新SDK

  2. 解压并添加Framework:

    1. AlicloudUTDID.xcframeworkAlicloudApmCore.xcframeworkAlicloudApmCrashAnalysis.xcframework拖入工程。

    2. 详细操作步骤如下图所示。image

  3. 打开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 参数:

    1. 打开项目设置。

    2. 导航到 TARGETS。

    3. 选择 Build Settings。

    4. 找到 Linking 部分。

    5. 在 Other Linker Flags 中添加 -ObjC。

2. SDK初始化

AppDelegate中完成初始化。示例代码如下:

Object C
#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的样例代码

Object C
#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

用于指定AppAppKey。

【数据类型】字符串

【是否必选】是

【是否可为空】否

【默认值】无

appSecret

用于指定AppAppSecret。

【数据类型】字符串

【是否必选】是

【是否可为空】否

【默认值】无

sdkComponents

用于指定APM SDK加载的业务组件,崩溃分析对应的参数是[EAPMCrashAnalysis class]

【数据类型】数组

【是否必选】是

【是否可为空】否

【默认值】无

userId

用于设置用户ID,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。

【数据类型】字符串

【取值范围】128

【是否必选】否

【是否可为空】是

【默认值】无

【命名规范】自定义

userNick

用于指定用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。

【数据类型】字符串

【取值范围】128

【是否必选】是

【是否可为空】否

【默认值】无

【命名规范】自定义

channel

用于指定渠道标识,上报至服务端,进行渠道区分。

【数据类型】字符串

【取值范围】128

【是否必选】是

【是否可为空】否

【默认值】无

3 添加高级设置

iOS SDK提供接口,用于上报自定义日志、维度、错误对象。

Object C
// 上报自定义维度
[[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接入操作完成后,需进行功能验证。

  1. 编写测试代码,模拟/触发移动端崩溃。例如:

Object C
NSMutableArray *array = @[];
[array addObject:nil]; // crash
说明

更多内容参考样例代码。

  1. 在真机或模拟器上运行应用后,请查看Xcode控制台输出,检查是否有类似以下日志信息:

    [AlicloudApmCore] Started Successfully
    [AlicloudApmSetting] Fetched Successfully

    此日志表明SDK已成功启动,并且拉取配置成功。

  2. 重启移动端大概2分钟后在控制台查看是否显示崩溃信息。

    说明

    崩溃数据从采集到上传到控制台显示,存在大约2~3分钟延迟。

    • 显示崩溃数据:SDK接入成功

    • 数据未显示:请联系技术支持解决。

三、扩展资料

  1. 崩溃分析服务iOS SDK接入工程样例请参见Demo工程

  • 本页导读 (0)
  • 一、前提条件
  • 二、接入步骤
  • 1. 添加SDK依赖
  • 2. SDK初始化
  • 3 添加高级设置
  • 4 编译
  • 5 功能验证
  • 三、扩展资料
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等