全部产品

iOS SDK接入(手动集成)

更新时间:2020-09-09 18:51:43

本文介绍如何使用手动集成方式接入崩溃分析服务的iOS SDK。

iOS SDK接入可采用Pod集成和手动集成2种方式。推荐使用Pod集成方式接入崩溃分析服务,可大幅简化接入操作。

如需使用Pod集成方式接入崩溃分析服务的iOS SDK,操作方法参见:iOS SDK接入(Pod集成)

前置条件

  • 已注册阿里云账号。
  • 已开通崩溃分析服务。
  • 已创建产品/应用。

具体内容参见快速入门

使用限制

  • 仅支持iOS 8.0及以上的App。

操作步骤

接入概述

通过iOS SDK接入崩溃分析服务的操作步骤如下:
步骤1:准备。下载相关文件备用。
步骤2:手动方式集成SDK。
步骤3:初始化SDK,接入服务。
步骤4:编译。

步骤1:准备阶段

下载iOS配置文件、SDK包和开源库文件。

下载iOS配置文件

1:在“控制台 > 移动研发平台 EMAS > 我的产品”页面,单击iOS应用图标,打开指定iOS应用的“应用管理”页面。

应用管理

2:在“应用管理”页面,单击“应用配置”按钮,打开“编辑配置”右侧栏。

应用管理页面

3:在“编辑配置”右侧栏,单击“下载iOS配置”按钮,下载iOS配置文件。
iOS配置文件:AliyunEmasServices-Info.plist

下载iOS配置文件

下载SDK包

1:在“控制台 > 移动研发平台 EMAS > 我的产品”页面,单击“SDK下载”链接,打开“SDK下载”右侧栏,在“SDK列表”下载崩溃分析服务的iOS版。

下载SDK

2:检查SDK包,确保内容完整无缺失。
SDK包文件列表如下:

  • AlicloudCrash.framework
  • AliHACore.framework
  • AliHALogEngine.framework
  • AliHAProtocol.framework
  • AlicloudHAUtil.framework
  • AlicloudUtils.framework
  • AlicloudUT.framework
  • CrashReporter.framework
  • JDYThreadTrace.framework
  • TBCrashReporter.framework
  • TBJSONModel.framework
  • TBRest.framework
  • UTDID.framework
  • ZipArchive.framework

步骤2:集成SDK

1:在Xcode中,将SDK目录中的framework文件拖入Target目录,在弹出框勾选Copy items if needed选项。

2:打开“Build Phases > Link Binary With Libraries”,添加Xcode自带的公共包文件:

  • libc++.tbd
  • SystemConfiguration.framework

步骤3:接入服务

1:将iOS配置文件AliyunEmasServices-Info.plist拷贝至项目根目录。

2:在AppDelegate.m文件的application:didFinishLaunchingWithOptions方法中初始化SDK。

引入头文件:

  1. #import <AlicloudCrash/AlicloudCrashProvider.h>
  2. #import <AlicloudHAUtil/AlicloudHAProvider.h>

添加代码段:

  1. NSString *appVersion = @"x.x"; //app版本,会上报
  2. NSString *channel = @"xx"; //渠道标记,自定义,会上报
  3. NSString *nick = @"xx"; //nick 昵称,自定义,会上报
  4. [[AlicloudCrashProvider alloc] autoInitWithAppVersion:appVersion channel:channel nick:nick];
  5. [AlicloudHAProvider start];

参数说明:

参数 说明
appVersion 用于指定App的版本,上报至服务端,进行版本区分。
【数据类型】字符串
【格式要求】自定义
【取值范围】任意长度。说明:该参数值将在控制台显示为下拉列表选项,建议短小凝练。
【是否必选】是
【是否可为空】否
【默认值】无
【大小写敏感】是。例如,vx.x和Vx.x不是一个版本。
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
channel 用于指定渠道标识,上报至服务端,进行渠道区分。
【数据类型】字符串
【取值范围】任意长度
【是否必选】是
【是否可为空】否
【默认值】无
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
nick 用于指定用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。
【数据类型】字符串
【取值范围】任意长度
【是否必选】是
【是否可为空】否
【默认值】无
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
【命名规范】自定义

步骤4:编译

1:在项目的Build Setting中,将Allow Non-modular Includes In Framework Modules设置为YES

2:执行编译。

说明

  • 编译过程中如出现duplicate symbol类型错误,确认本地依赖与CocoaPods管理的依赖是否重复;如是,则删除本地依赖。
  • 如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法参见:SDK UTDID冲突解决方案

样例代码

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

功能验证

iOS SDK接入操作完成后,需进行功能验证。

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

  1. NSMutableArray *array = @[];
  2. [array addObject:nil];

说明:更多内容参考样例代码。

2:重启移动端。(2分钟后)在控制台查看是否显示崩溃信息。
说明:数据从App采集到控制台显示,存在大约2~3分钟延迟。

  • 数据正常显示:iOS SDK接入成功。
  • 数据未显示:需进一步排查。

3:在模拟/触发崩溃,及重启移动端期间,使用Charles抓包,查看能否捕获包含https://adash-emas.cn-hangzhou.aliyuncs.com/upload的HTTP请求:

  • 捕获HTTP请求:崩溃信息已上报。可能原因:后端未接入;Appkey/Secret信息有误。
  • 未捕获HTTP请求:崩溃信息未上报。可能原因:SDK接入失败;SDK未捕获崩溃;数据发送失败。

请联系技术支持解决。