全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

前言

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

总结

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


# ios  # 程序崩溃原因  # ios程序崩溃日志  # 收集程序崩溃日志  # iOS 捕获程序崩溃日志  # IOS10 解决权限崩溃问题详解  # 解决iOS7上UITextField限制字数输入导致崩溃问题的方法  # iOS10 权限崩溃问题详解及解决方案  # 被杀  # 启动时  # 的是  # 相关内容  # 本地下载  # 一句  # 下载地址  # 只需  # 给大家  # 弹出  # 这篇文章  # 谢谢大家  # 多说  # 建议您  # 最新版本  # 方法来  # 退到  # 新到  # 检测到  # 我已经 


相关文章: 宿州网站制作公司兴策,安徽省低保查询网站?  建站主机如何选?高性价比方案全解析  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在IIS中新建站点并配置端口与IP地址?  建站org新手必看:2024最新搭建流程与模板选择技巧  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何使用Golang table-driven基准测试_多组数据测量函数效率  北京专业网站制作设计师招聘,北京白云观官方网站?  已有域名能否直接搭建网站?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  历史网站制作软件,华为如何找回被删除的网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星收费标准详解:套餐费用及年费价格表一览  建站主机默认首页配置指南:核心功能与访问路径优化  移民网站制作流程,怎么看加拿大移民官网?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  模具网站制作流程,如何找模具客户?  建站OpenVZ教程与优化策略:配置指南与性能提升  重庆网站制作公司哪家好,重庆中考招生办官方网站?  香港服务器租用费用高吗?如何避免常见误区?  h5网站制作工具有哪些,h5页面制作工具有哪些?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  ,sp开头的版面叫什么?  ,巨量百应是干嘛的?  南平网站制作公司,2025年南平市事业单位报名时间?  如何选择高效便捷的WAP商城建站系统?  网站按钮制作软件,如何实现网页中按钮的自动点击?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  建站VPS推荐:2025年高性能服务器配置指南  实例解析Array和String方法  如何通过FTP空间快速搭建安全高效网站?  如何在西部数码注册域名并快速搭建网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何选购建站域名与空间?自助平台全解析  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  ,怎么在广州志愿者网站注册?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  常州企业网站制作公司,全国继续教育网怎么登录?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  如何选择CMS系统实现快速建站与SEO优化?  高防服务器租用指南:配置选择与快速部署攻略  寿县云建站:智能SEO优化与多行业模板快速上线指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。