KSCrash 是一個(gè)開源的第三方框架,可以將用戶的崩潰日志以郵件發(fā)給你或者以發(fā)給我們提供的服務(wù)器,但是那個(gè)格式是jason格式,只有郵件可以設(shè)置成appStyle。如下我將講述如何使用它吧。KSCrash代碼,可以下載人家代碼,但是那個(gè)代碼不是最新的,我個(gè)人比較喜歡用Pod 導(dǎo)入,這樣保證代碼是最新的,Pod的安裝和使用。
用KSCrash崩潰報(bào)告不是時(shí)時(shí)發(fā),而是APP 崩潰時(shí),將崩潰日志記錄,第二次啟動(dòng)APP的時(shí)發(fā)送,但是騰訊Buglg可以做到時(shí)時(shí)發(fā)送崩潰報(bào)告,這樣做很不安全,不建議這樣做。因?yàn)楸罎r(shí),APP本身處于不友好的環(huán)境,我們再做其他事情,容易造成死鎖,下一次用戶不能開動(dòng)APP,很不好的用戶體驗(yàn)。
如下講解將用戶的崩潰日志,一種是發(fā)郵件給開發(fā) 和以發(fā)給服務(wù)器形式。
第一種是可以將崩潰日志發(fā)到郵箱去
- (KSCrashInstallation*) makeEmailInstallation
{
//開發(fā)者郵件地址
NSString* emailAddress = @"oli_iosdeveloper@163.com";
KSCrashInstallationEmail* email = [KSCrashInstallationEmail sharedInstance];
email.recipients = @[emailAddress];
email.subject = @"Crash Report";
email.message = @"This is a crash report";
email.filenameFmt = @"crash-report-%d.txt.gz";
[email addConditionalAlertWithTitle:@"Crash Detected"
message:@"The app crashed last time it was launched. Send a crash report?" yesAnswer:@"Sure!" noAnswer:@"No thanks"];
// 如下代碼是設(shè)置發(fā)送StyleApple 如果不加的話,會(huì)以jason的格式傳給開發(fā)者。
[email setReportStyle:KSCrashEmailReportStyleApple useDefaultFilenameFormat:YES];
return email;
}
第二種是可以將崩潰日志發(fā)到貴司的服務(wù)器的
- (KSCrashInstallation*) makeStandardInstallation
{
NSURL* url = [NSURL URLWithString:@"http://put.your.url.here"];//寫入服務(wù)器的網(wǎng)址
KSCrashInstallationStandard* standard = [KSCrashInstallationStandard sharedInstance];
standard.url = url;
return standard;
}
如下是兩個(gè)格式的公共代碼
- (void) installCrashHandler
{
// Create an installation (choose one)
// KSCrashInstallation* installation = [self makeStandardInstallation];
KSCrashInstallation* installation = [self makeEmailInstallation];
// 安裝異常處理者,越早安裝越好
// 如下將自動(dòng)記錄崩潰信息,但是它不會(huì)自動(dòng)發(fā)送報(bào)告
[installation install];
// 此方法是確認(rèn)崩潰報(bào)告發(fā)送后,如何處理舊的崩潰。
[KSCrash sharedInstance].deleteBehaviorAfterSendAll = KSCDeleteNever;
// 發(fā)送崩潰日志
[installation sendAllReportsWithCompletion:^(NSArray* reports, BOOL completed, NSError* error)
{
if(completed)
{
NSLog(@"Sent %d reports", (int)[reports count]);
}
else{
NSLog(@"Failed to send reports: %@", error);
}}];}
我只是代碼的搬運(yùn)工,哈哈。最后不要嘗試在 APP崩潰的時(shí)候,將崩潰日志發(fā)送出來,這樣很有可能將呈現(xiàn)一個(gè)死循環(huán),第二次根本無法啟動(dòng)APP。后續(xù)我將分享PLCrasher的用法,敬請期待。
本人小白,望多指點(diǎn)?。「卸?。
May maker help us all!! Thank you a lot again!!