Mac端接入指引
1 Mac端CrashSight接入说明
本文是介绍Mac端SDK的详细文档,介绍了Mac平台所支持的接口. 如果想快速接入,验证平台和SDK功能,建议查看项目菜单中的“接入指南”。引导中已经按项目具体的信息(平台,引擎,国内/海外,AppID)生成了针对此 项目的初始化代码,可以直接复制使用。如下图所示:
项目创建:公司外部项目支持自助创建项目,但有免费试用时长。公司内部项目,企业微信联系“CrashSight小助手”开通。
2 Mac SDK集成
- 在平台成功创建项目后,在侧边栏的“接入指南”中,选择接入方式,然后在“SDK下载及接入”页中下载SDK。如下图所示:
- 拖拽CrashSight.framework文件到Xcode工程内(请勾选"Copy items if needed"选项)
2.1 SDK初始化
2.1.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.1.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.2 接入结果测试
在初始化CrashSight的之后,通过按键触发崩溃。 可以编写一个简单的崩溃触发代码,如非法内存访问:
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 Mac 接口说明
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 | 错误类型:ocoa=3,CSharp=4,JS=5,Lua=6 |
aName | NSString * | 名称 |
aReason | NSString * | 错误原因 |
aStackArray | NSArray * | 堆栈 |
info | NSDictionary * | 附加数据,不应超过500对,总长度不超过1Mb |
terminate | BOOL | 上报后是否退出应用进程 |
页面查看:
info:崩溃详情页->附件下载->extraMessage.txt
3.7 设置上报日志级别
类:CrashSightLog
方法:+ (void)initLogger:(CrashSightLogLevel) level consolePrint:(BOOL)printConsole;
参数 | 类型 | 说明 |
---|---|---|
level | CrashSightLogLevel | 上报日志的最低级别限制 |
printConsole | BOOL | 是否在控制台打印 |
3.8 自定义上报日志
说明:限制30KB
类:CrashSightLog
方法:+ (void)level:(CrashSightLogLevel) level log:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3);
参数 | 类型 | 说明 |
---|---|---|
level | CrashSightLogLevel | 日志级别 |
format | NSString * | 日志format |
... | 可变参数 |
3.9 设置异常回调
类:CrashSightDelegate
代理属性:delegate
代理协议:CrashSightDelegate
代理协议方法:- (NSString * CS_NULLABLE)attachmentForException:(NSException * CS_NULLABLE)exception callbackType:(CSCallbackType)callbackType;
说明:代理协议方法返回的结果,随异常上报一起上报 页面查看:崩溃详情页->附件下载->CrashAttach.log
callback type对照表:
callback type | 异常类型 |
---|---|
0 | Java crash |
2 | Native crash |
3 | c# exception |
4 | ANR |
5 | JS exception |
6 | lua exception |
8 | custom error |