最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)學(xué)習(xí)之監(jiān)測程序的崩潰次數(shù)詳解

 更新時(shí)間:2017年07月17日 10:36:09   作者:斌Jonas  
iOS開發(fā)中遇到程序崩潰是很正常的事情,下面這篇文章主要給大家介紹了關(guān)于iOS如何監(jiān)測程序崩潰次數(shù)的相關(guān)資料,文中通過詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹的是關(guān)于iOS如何監(jiān)測程序崩潰次數(shù)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說,來一起看看詳細(xì)的介紹:

在寫代碼之前,我們先弄明白一個(gè)app運(yùn)行的流程。

程序運(yùn)行啟動(dòng)時(shí)依次調(diào)用

      1.啟動(dòng)頁先運(yùn)行

      2. - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

      3. - (void)applicationDidBecomeActive:(UIApplication*)application

程序退到后臺(tái)依次調(diào)用

      1. - (void)applicationWillResignActive:(UIApplication*)application

      2. - (void)applicationDidEnterBackground:(UIApplication*)application

程序從后臺(tái)回到前臺(tái)依次調(diào)用

      1. - (void)applicationWillEnterForeground:(UIApplication*)application

      2. - (void)applicationDidBecomeActive:(UIApplication*)application

程序被殺掉會(huì)依次調(diào)用

      1. - (void)applicationWillResignActive:(UIApplication*)application

      2. - (void)applicationDidEnterBackground:(UIApplication*)application

      3. - (void)applicationWillTerminate:(UIApplication*)application

程序崩潰閃退則不會(huì)調(diào)用任何方法

根據(jù)程序被殺掉和崩潰之間的區(qū)別可以寫一個(gè)方法來檢測和記錄程序崩潰次數(shù)。

實(shí)現(xiàn)思路

在程序啟動(dòng)時(shí)把存儲(chǔ)在沙盒中的崩潰標(biāo)識(shí)isCrash置為YES,程序?qū)⒁顺鰰r(shí)把isCrash改為NO。

代碼:

程序啟動(dòng)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

 [self recordCrashCount];

}

程序退出

- (void)applicationWillTerminate:(UIApplication *)application {

 [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:@"JJ_isCrash"];
 [[NSUserDefaults standardUserDefaults] synchronize];
}
// 判斷和記錄崩潰的次數(shù)

- (void)recordCrashCount{

 BOOL isCrash = [[[NSUserDefaults standardUserDefaults] valueForKey:@"JJ_isCrash"] boolValue];

 [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:@"JJ_isCrash"];

 if (isCrash == YES) {

  //獲取到本地存儲(chǔ)的崩潰次數(shù)
  NSNumber *crashNum = [[NSUserDefaults standardUserDefaults] valueForKey:@"JJ_crashCount"];

  NSInteger count =0;

  if (crashNum != nil) {

   count = [crashNum integerValue];

  }

  count++;

  //判斷崩潰次數(shù)達(dá)到多少次時(shí)執(zhí)行操作

  if (count >= crashCount) {

   NSLog(@"多次崩潰");

   //將本地文件崩潰次數(shù)重新置為0
   [[NSUserDefaults standardUserDefaults] setObject:@0 forKey:@"JJ_crashCount"];

   // 5秒后執(zhí)行彈窗警告操作
   [self performSelector:@selector(showAlertAction)withObject:nil afterDelay:5];
   return;
  }

  //崩潰次數(shù)未達(dá)到3次則向本地存儲(chǔ)崩潰次數(shù)
  crashNum = [NSNumber numberWithInteger:count];
  [[NSUserDefaults standardUserDefaults] setObject:crashNum forKey:@"JJ_crashCount"];
 }
}
// 彈出升級(jí)警告

- (void)showAlertAction{

UIAlertController*alert

=

[UIAlertControlleralertControllerWithTitle:@"警告"message:@"檢測到軟件多次異常退出,建議您盡快更新到最新版本!" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction*sure = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefaulthandler:nil];

[alert addAction:sure];

[self.window.rootViewController presentViewController:alert animated:YES completion:nil];

}

為了方便大家直接使用,我已經(jīng)將實(shí)現(xiàn)代碼封裝為一個(gè)小框架,只需使用一句代碼即可調(diào)用。

github下載地址: https://github.com/jiangbin1993/JJRecordCrash

本地下載地址:http://xiazai.jb51.net/201707/yuanma/JJRecordCrash(jb51.net).rar

使用方法:

在appdelegate.m中導(dǎo)入頭文件 #import "JJRecordCrash.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

 // 參數(shù)crashCount為崩潰多少次后執(zhí)行block中的代碼
 [[JJRecordCrash shareInstance] recordCrashWithCrashCount:2 handle:^{
  // 多次崩潰后執(zhí)行自己想執(zhí)行的代碼,如:清除緩存 提示用戶更新
  NSLog(@"崩潰啦");
 }];

 return YES;
}

注意:調(diào)試時(shí),在程序運(yùn)行中直接使用xcode重新運(yùn)行程序,因?yàn)椴粫?huì)走- (void)applicationWillTerminate:(UIApplication*)application方法,所以也相當(dāng)于是崩潰,同樣會(huì)被記錄下來。

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

湖州市| 牙克石市| 上杭县| 原阳县| 英超| 汝阳县| 闸北区| 昭觉县| 响水县| 遵义市| 衡阳县| 会泽县| 台南市| 九台市| 淮阳县| 康定县| 察雅县| 达日县| 维西| 左云县| 五大连池市| 延安市| 屏边| 黄骅市| 临漳县| 和硕县| 中宁县| 洱源县| 象州县| 大邑县| 高唐县| 响水县| 田林县| 北流市| 安福县| 拜泉县| 时尚| 平罗县| 大同市| 宜城市| 忻州市|