移动端接入指引
1 移动端CrashSight接入说明
本文是介绍移动端SDK的详细文档,内容包含了iOS和Android两个平台SDK接入的内容,并详细介绍了两个平台所支持的接口. 如果想快速接入,验证平台和SDK功能,建议查看项目菜单中的“接入指南”。引 导中已经按项目具体的信息(平台,引擎,国内/海外,AppID)生成了针对此项目的初始化代码,可以直接复制使用。如下图所示:
项目创建:公司外部项目支持自助创建项目,但有免费试用时长。公司内部项目,企业微信联系“CrashSight小助手”开通。
2 iOS SDK集成
2.1 CocoaPods集成
-
在Podfile中添加 pod 'CrashSight'
-
运行pod install 或 pod update 命令
-
从.xcworkspace文件进入工程(而非.xcodeproj文件)
2.2 手动集成
- 在平台成功创建项目后,在侧边栏的“接入指南”中,选择接入方式,然后在“SDK下载及接入”页中下载SDK。如下图所示:
- iOS SDK依赖添加
- 拖拽CrashSight.framework文件到Xcode工程内(请勾选"Copy items if needed"选项)
- 添加依赖库
- libc++.dylib 或 libc++.tdb 用于引入c++标准库
- libz.dylib 或 libz.tdb 用于对 上报的数据进行压缩
- Security.framework 用于存储keychain
- SystemConfiguration.framework 用于读取异常发生时的系统信息
- MetricKit.framework 用于获取apple提供的app诊断信息(弱引用,请选择“optional”)
- OSLog.framework 用于获取NSLog日志信息(弱引用,请选择“optional”)
- CFNetwork.framework 用于获取VPN状态
2.3 SDK初始化
2.3.1 Objective-C初始化
-
在工程的AppDelegate.m文件导入头文件
#import <CrashSight/CrashSight.h>
-
初始化 在工程AppDelegate.m文件的
application:didFinishLaunchingWithOptions:
方法中初始化
CrashSightConfig* config = [[CrashSightConfig alloc] init];
// 自定义设置上报域名(可选)
config.crashServerUrl = @"http://xxxx";
config.debugMode = true;//打开debug mode
NSString* appId = @"appId";
[CrashSight startWithAppId:appId config:config];
2.3.2 Swift初始化
- 创建一个Objective-C Bridging Header(如果项目中原来没有的话) · 新建一个.h文件 · 找到Build Settings->Swift Compiler-General->Objective-C Bridging Header,将刚刚创建的.h文件的路径填入
- 在Objective-C Bridging Header中导入头文件
#import <CrashSight/CrashSight.h>
- 在XXXApp.swift中添加初始化代码
@main
struct XXXApp: App {
init() {
let config = CrashSightConfig();
config.crashServerUrl = "http://xxxx";
config.debugMode = true;
let appId = "appId";
CrashSight.start(withAppId:appId,config:config);
}
...
上报域名
2.4 接入结果测试
在初始化CrashSight的之后,通过按键触发崩溃。 当前iOS移动端还没有添加崩溃测试接口(后续会补充),可以编写一个简单的崩溃触发代码,如非法内存访问:
int* a = NULL;
a[10000] = 5;
- a. 开启Debug模式,初始化CrashSight,并给定合适的配置参数
- b. 联网上报:检查测试设备日志中是否打印“begin to upload <CSAnalyticsLogic” 或者 “cmd: 641”
- c. 崩溃捕获:检查测试设备日志中是否打印“Handle the crash scene in callback”
- d. 上报异常:检查测试设备日志中是否打印“begin to upload <CSCrashLogic” 或者 “cmd: 631”
3 iOS 接口说明
3.1 使用指定配置初始化CrashSight
类:CrashSight
方法:+ (void)startWithAppId:(NSString * CS_NULLABLE)appId
developmentDevice:(BOOL)development
config:(CrashSightConfig * CS_NULLABLE)config;
参数 | 类型 | 说明 |
---|---|---|
appid | NSString * | 从CrashSight后台申请的appid |
development | BOOL | 是否是开发设备 |
config | CrashSightConfig * | 详情参考CrashSightConfig.h 头文件 |
3.2 设置用户标识
类:CrashSight
方法:+ (void)setUserIdentifier:(NSString *)userId;
参数 | 类型 | 说明 |
---|---|---|
userId | NSString * | 用户标识 |
3.3 设置应用版本信息
类:CrashSight
方法:+ (void)updateAppVersion:(NSString *)version;
参数 | 类型 | 说明 |
---|---|---|
version | NSString * | 应用版本 |
3.4 设置关键数据,随崩溃信息上报
说明:设置用户自定义的 Key-Value 数据,将在发送 Crash 时随异常信息一起上报,单个key长度限制100字符,单个value限制1000字符,总长度(所有key+value)限制128KB
页面查看:崩溃详情页->附件下载->CustomizedData.txt
类:CrashSight
方法:+ (void)setUserValue:(NSString *)value
forKey:(NSString *)key;
参数 | 类型 | 说明 |
---|---|---|
key | NSString * | 键 |
value | NSString * | 值 |
3.5 设置场景标记
类:CrashSight
方法:+ (void)setUserSceneTag:(NSString *)userSceneTag;
参数 | 类型 | 说明 |
---|---|---|
userSceneTag | NSString * | 场景标记 |
3.6 上报自定义错误
类:CrashSight
方法:+ (void)reportExceptionWithCategory:(NSUInteger)category
name:(NSString *)aName
reason:(NSString *)aReason
callStack:(NSArray *)aStackArray
extraInfo:(NSDictionary *)info
terminateApp:(BOOL)terminate;
参数 | 类型 | 说明 |
---|---|---|
category | NSUInteger |