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

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

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

前言

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

在寫代碼之前,我們先弄明白一個app運行的流程。

程序運行啟動時依次調用

      1.啟動頁先運行

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

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

程序退到后臺依次調用

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

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

程序從后臺回到前臺依次調用

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

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

程序被殺掉會依次調用

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

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

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

程序崩潰閃退則不會調用任何方法

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

實現(xiàn)思路

在程序啟動時把存儲在沙盒中的崩潰標識isCrash置為YES,程序將要退出時把isCrash改為NO。

代碼:

程序啟動

- (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) {

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

  NSInteger count =0;

  if (crashNum != nil) {

   count = [crashNum integerValue];

  }

  count++;

  //判斷崩潰次數(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ù)未達到3次則向本地存儲崩潰次數(shù)
  crashNum = [NSNumber numberWithInteger:count];
  [[NSUserDefaults standardUserDefaults] setObject:crashNum forKey:@"JJ_crashCount"];
 }
}
// 彈出升級警告

- (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)將實現(xiàn)代碼封裝為一個小框架,只需使用一句代碼即可調用。

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

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

使用方法:

在appdelegate.m中導入頭文件 #import "JJRecordCrash.h"

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

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

 return YES;
}

注意:調試時,在程序運行中直接使用xcode重新運行程序,因為不會走- (void)applicationWillTerminate:(UIApplication*)application方法,所以也相當于是崩潰,同樣會被記錄下來。

總結

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

相關文章

最新評論

米林县| 广饶县| 赫章县| 黄大仙区| 肥城市| 仙桃市| 酉阳| 黔西县| 博野县| 武胜县| 衢州市| 工布江达县| 宁化县| 岚皋县| 栖霞市| 大邑县| 崇左市| 百色市| 高唐县| 会同县| 韶山市| 安化县| 兴国县| 南阳市| 石首市| 新巴尔虎右旗| 正宁县| 鄂伦春自治旗| 资源县| 新泰市| 常山县| 武定县| 靖边县| 织金县| 达拉特旗| 桂东县| 紫云| 兴义市| 拜泉县| 抚顺市| 思茅市|