当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS开发学习之监测程序的崩溃次数详解

iOS开发学习之监测程序的崩溃次数详解

2019年07月24日  | 移动技术网IT编程  | 我要评论

拉字至上第二季,貌似纯洁txt下载,粤公府

前言

本文主要给大家介绍的是关于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方法,所以也相当于是崩溃,同样会被记录下来。

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网