手把手教你使用Bugly收集线上崩溃信息

2018-02-27 11:16:22来源:https://www.jianshu.com/p/48844266a0de作者:小蠢驴打代码人点击

分享



我们都知道,app在上线之后,用户如果操作我们的app导致的崩溃、错误信息,我们是无法获知的,这时候,就需要一款工具,来告诉我们现在的app在线上的运行情况;
现在线上信息收集的工具有 友盟、极光等,这里我要用到的是第三款常用的工具 - Bugly



made in 小蠢驴的crash.jpg

Bugly集成导入步骤


pod 'BuglyHotfix' (手动导入比较麻烦)
import 'JPEngine.h' (该文件在JSPatch文件夹中)
在appdelegate.m文件的 didFinishLaunchingWithOptions 方法中,对bugly进行初始化


JSPatch 文件夹要手动获取,要么去bugly官方说明文档下载,或者:




1.下载iOS - sdk包



2.把如图所示的JSPatch文件拖入项目

didFinishLaunchingWithOptions 中的初始化bugly方法


{
//初始化 Bugly 异常上报
BuglyConfig *config = [[BuglyConfig alloc] init];
config.delegate = self;
config.debugMode = YES;
config.reportLogLevel = BuglyLogLevelWarn;

//这里替换自己的appID
[Bugly startWithAppId:@"07792e0d22"
#if DEBUG
developmentDevice:YES
#endif
config:config];

//捕获 JSPatch 异常并上报
[JPEngine handleException:^(NSString *msg) {
NSException *jspatchException = [NSException exceptionWithName:@"Hotfix Exception" reason:msg userInfo:nil];
[Bugly reportException:jspatchException];
}];
//检测补丁策略
[[BuglyMender sharedMender] checkRemoteConfigWithEventHandler:^(BuglyHotfixEvent event, NSDictionary *patchInfo) {
//有新补丁或本地补丁状态正常
if (event == BuglyHotfixEventPatchValid || event == BuglyHotfixEventNewPatch) {
//获取本地补丁路径
NSString *patchDirectory = [[BuglyMender sharedMender] patchDirectory];
if (patchDirectory) {
//指定执行的 js 脚本文件名
NSString *patchFileName = @"main.js";
NSString *patchFile = [patchDirectory stringByAppendingPathComponent:patchFileName];
//执行补丁加载并上报激活状态
if ([[NSFileManager defaultManager] fileExistsAtPath:patchFile] &&
[JPEngine evaluateScriptWithPath:patchFile] != nil) {
BLYLogInfo(@"evaluateScript success");
[[BuglyMender sharedMender] reportPatchStatus:BuglyHotfixPatchStatusActiveSucess];
}else {
BLYLogInfo(@"evaluateScript failed");
[[BuglyMender sharedMender] reportPatchStatus:BuglyHotfixPatchStatusActiveFail];
}
}
}
}];
}

上述基础步骤,在bugly的官方文档中都有说明,接下去是重点了



如何获取到app的崩溃信息
- (void)clickCrashBtn{
//声明一个方法,按钮一调用,就会crash
NSString *value = nil;
NSDictionary *dic = @{@"key":value};
}



3.png

如图,我们发现程序crash了,默认的bugly是会收集程序的crash信息的,我们登录bugly后台看看




4.png

发现并没有手机到crash信息,难道我们设置错误了?


不,这里要注意,图3中,程序是crash了,但是他是卡在main()函数的断点里了,所以其实crash信息并没有发送给bugly
那要怎么做? ==> 使用真机



真机crash演示.gif

解释下真机操作的步骤 - 1.打开buglyDemo;2-点击‘crash测试’




5.png

登录bugly后台,发现捕捉到了我们的程序crash,而且包括调用的方法,错误原因,都显示了出来。


华丽分割线 - 进阶用法 :捕捉非crash信息
有些时候,我们要捕捉的信息可能不只是app crash的信息,比如http请求错误之类的,其实也是可以捕捉的,就看用户需求;
同理,如果要捕捉用户的个人信息,比如登录信息,手机号等,只要在app中可以拿得到的,其实都可以让bugly捕捉;
这里简单讲下,如果设置捕捉非crash信息,以http 请求错误为例



6.png



7.png

1.要开启日志功能,记得修改默认的reportLogLever


    //BuglyLogLevelSilent 替换成 BuglyLogLevelWarn - 开启日志收集功能
config.reportLogLevel = BuglyLogLevelWarn;

2.设置错误上传




8.png

如图,其实异常上传或者错误上传等等,有多种标签可以设置,这里我们就先以异常上传 reportException来举个

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台