欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

程序運行啟動時依次調(diào)用

      1.啟動頁先運行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

實現(xiàn)思路

在程序啟動時把存儲在沙盒中的崩潰標識isCrash置為YES,程序?qū)⒁顺鰰r把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)代碼封裝為一個小框架,只需使用一句代碼即可調(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)試時,在程序運行中直接使用xcode重新運行程序,因為不會走- (void)applicationWillTerminate:(UIApplication*)application方法,所以也相當于是崩潰,同樣會被記錄下來。

總結(jié)

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

相關(guān)文章

  • iOS開發(fā)之離線地圖核心代碼

    iOS開發(fā)之離線地圖核心代碼

    本文給大家分享ios開發(fā)之離線地圖核心代碼,代碼簡單易懂,非常實用,有需要的朋友參考下
    2016-04-04
  • iOS 中使用tableView實現(xiàn)右滑顯示選擇功能

    iOS 中使用tableView實現(xiàn)右滑顯示選擇功能

    這篇文章主要介紹了iOS 中使用tableView實現(xiàn)右滑顯示選擇功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • iOS實現(xiàn)控制屏幕常亮不變暗的方法示例

    iOS實現(xiàn)控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關(guān)于利用iOS如何實現(xiàn)控制屏幕常亮不變暗的方法,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 針對iOS10新增Api的詳細研究

    針對iOS10新增Api的詳細研究

    這篇文章主要針對iOS10新增Api進行詳細研究,基于Api層面,著重看一些具體用法所做的筆記,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS多語言本地化流程的優(yōu)化方案

    iOS多語言本地化流程的優(yōu)化方案

    這篇文章主要給大家介紹了關(guān)于iOS多語言本地化流程的優(yōu)化的相關(guān)資料,多語言本地化是我們大家在開發(fā)中經(jīng)常會遇到的一個功能,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2018-01-01
  • IOS 基礎(chǔ)之設(shè)置 tableview 的分割線

    IOS 基礎(chǔ)之設(shè)置 tableview 的分割線

    這篇文章主要介紹了IOS 基礎(chǔ)之設(shè)置 tableview 的分割線的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 基于iOS Realm數(shù)據(jù)庫的使用實例詳解

    基于iOS Realm數(shù)據(jù)庫的使用實例詳解

    下面小編就為大家分享一篇基于iOS Realm數(shù)據(jù)庫的使用實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS開發(fā)之獲取LaunchImage啟動圖的實例

    iOS開發(fā)之獲取LaunchImage啟動圖的實例

    下面小編就為大家分享一篇iOS開發(fā)之獲取LaunchImage啟動圖的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 解決Flutter出現(xiàn)CocoaPods報錯情況(Mac和IOS)

    解決Flutter出現(xiàn)CocoaPods報錯情況(Mac和IOS)

    這篇文章主要為大家介紹了解決Flutter出現(xiàn)CocoaPods報錯情況(Mac和IOS)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • iOS中的ipa重簽名(逆向必備)

    iOS中的ipa重簽名(逆向必備)

    這篇文章給大家介紹了ios中的ipa重簽名知識以及錯誤原因及解決俄方案,需要的朋友參考下吧
    2018-01-01

最新評論