国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS開發學習之監測程序的崩潰次數詳解

2020-07-26 02:45:12
字體:
來源:轉載
供稿:網友

前言

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

在寫代碼之前,我們先弄明白一個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

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

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

實現思路

在程序啟動時把存儲在沙盒中的崩潰標識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];}
// 判斷和記錄崩潰的次數- (void)recordCrashCount{ BOOL isCrash = [[[NSUserDefaults standardUserDefaults] valueForKey:@"JJ_isCrash"] boolValue]; [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:@"JJ_isCrash"]; if (isCrash == YES) {  //獲取到本地存儲的崩潰次數  NSNumber *crashNum = [[NSUserDefaults standardUserDefaults] valueForKey:@"JJ_crashCount"];  NSInteger count =0;  if (crashNum != nil) {   count = [crashNum integerValue];  }  count++;  //判斷崩潰次數達到多少次時執行操作  if (count >= crashCount) {   NSLog(@"多次崩潰");   //將本地文件崩潰次數重新置為0   [[NSUserDefaults standardUserDefaults] setObject:@0 forKey:@"JJ_crashCount"];   // 5秒后執行彈窗警告操作   [self performSelector:@selector(showAlertAction)withObject:nil afterDelay:5];   return;  }  //崩潰次數未達到3次則向本地存儲崩潰次數  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];}

為了方便大家直接使用,我已經將實現代碼封裝為一個小框架,只需使用一句代碼即可調用。

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

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

使用方法:

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 參數crashCount為崩潰多少次后執行block中的代碼 [[JJRecordCrash shareInstance] recordCrashWithCrashCount:2 handle:^{  // 多次崩潰后執行自己想執行的代碼,如:清除緩存 提示用戶更新  NSLog(@"崩潰啦"); }]; return YES;}

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太和县| 江西省| 寿光市| 安庆市| 五原县| 丰原市| 南川市| 疏勒县| 赣榆县| 汤原县| 天等县| 中牟县| 尼勒克县| 汝城县| 曲松县| 邢台市| 多伦县| 伊金霍洛旗| 惠东县| 韶山市| 普陀区| 武汉市| 繁昌县| 德令哈市| 高要市| 沙湾县| 阿瓦提县| 扶沟县| 永善县| 内丘县| 玉田县| 中西区| 铜川市| 苍梧县| 黄石市| 青海省| 修水县| 临漳县| 南城县| 沈丘县| 云浮市|