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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:45:26
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹的是關于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

 

使用方法:

在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方法,所以也相當于是崩潰,同樣會被記錄下來。

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 关岭| 沭阳县| 安陆市| 北碚区| 凉城县| 太保市| 广丰县| 兰考县| 花莲县| 白沙| 木兰县| 兴国县| 青神县| 宾阳县| 灵山县| 普宁市| 漯河市| 卢湾区| 高碑店市| 咸宁市| 遂昌县| 武乡县| 永福县| 铜川市| 右玉县| 金门县| 宜昌市| 于田县| 商河县| 井陉县| 克东县| 湟源县| 滦南县| 思茅市| 石门县| 哈巴河县| 荆门市| 中方县| 绥德县| 子长县| 拜城县|