跳到主要内容

Mac端接入指引


1 Mac端CrashSight接入说明

本文是介绍Mac端SDK的详细文档,介绍了Mac平台所支持的接口. 如果想快速接入,验证平台和SDK功能,建议查看项目菜单中的“接入指南”。引导中已经按项目具体的信息(平台,引擎,国内/海外,AppID)生成了针对此项目的初始化代码,可以直接复制使用。如下图所示:

项目创建:公司外部项目支持自助创建项目,但有免费试用时长。公司内部项目,企业微信联系“CrashSight小助手”开通。

2 Mac SDK集成

  1. 在平台成功创建项目后,在侧边栏的“接入指南”中,选择接入方式,然后在“SDK下载及接入”页中下载SDK。如下图所示:

  1. 拖拽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;
参数类型说明
appidNSString *从CrashSight后台申请的appid
developmentBOOL是否是开发设备
configCrashSightConfig *详情参考CrashSightConfig.h 头文件

3.2 设置用户标识

类:CrashSight
方法:+ (void)setUserIdentifier:(NSString *)userId;
参数类型说明
userIdNSString *用户标识

3.3 设置应用版本信息

类:CrashSight
方法:+ (void)updateAppVersion:(NSString *)version;
参数类型说明
versionNSString *应用版本

3.4 设置关键数据,随崩溃信息上报

说明:设置用户自定义的 Key-Value 数据,将在发送 Crash 时随异常信息一起上报,单个key长度限制100字符,单个value限制1000字符,总长度(所有key+value)限制128KB

页面查看:崩溃详情页->附件下载->CustomizedData.txt

类:CrashSight
方法:+ (void)setUserValue:(NSString *)value
forKey:(NSString *)key;
参数类型说明
keyNSString *
valueNSString *

3.5 设置场景标记

类:CrashSight
方法:+ (void)setUserSceneTag:(NSString *)userSceneTag;
参数类型说明
userSceneTagNSString *场景标记

3.6 上报自定义错误

类:CrashSight
方法:+ (void)reportExceptionWithCategory:(NSUInteger)category
name:(NSString *)aName
reason:(NSString *)aReason
callStack:(NSArray *)aStackArray
extraInfo:(NSDictionary *)info
terminateApp:(BOOL)terminate;
参数类型说明
categoryNSUInteger错误类型:ocoa=3,CSharp=4,JS=5,Lua=6
aNameNSString *名称
aReasonNSString *错误原因
aStackArrayNSArray *堆栈
infoNSDictionary *附加数据,不应超过500对,总长度不超过1Mb
terminateBOOL上报后是否退出应用进程

页面查看:

info:崩溃详情页->附件下载->extraMessage.txt

3.7 设置上报日志级别

类:CrashSightLog
方法:+ (void)initLogger:(CrashSightLogLevel) level consolePrint:(BOOL)printConsole;
参数类型说明
levelCrashSightLogLevel上报日志的最低级别限制
printConsoleBOOL是否在控制台打印

3.8 自定义上报日志

说明:限制30KB

类:CrashSightLog
方法:+ (void)level:(CrashSightLogLevel) level log:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3);
参数类型说明
levelCrashSightLogLevel日志级别
formatNSString *日志format
...可变参数

3.9 设置异常回调

类:CrashSightDelegate
代理属性:delegate
代理协议:CrashSightDelegate
代理协议方法:- (NSString * CS_NULLABLE)attachmentForException:(NSException * CS_NULLABLE)exception callbackType:(CSCallbackType)callbackType;

说明:代理协议方法返回的结果,随异常上报一起上报 页面查看:崩溃详情页->附件下载->CrashAttach.log

callback type对照表:

callback type异常类型
0Java crash
2Native crash
3c# exception
4ANR
5JS exception
6lua exception
8custom error