前言
本文主要给大家介绍的是关于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"];
}
}










