美文网首页基础知识
崩溃统计、重启程序

崩溃统计、重启程序

作者: 闲得一B | 来源:发表于2016-04-20 06:30 被阅读72次
    方法一:在AppDelegate中
        //c语言的函数
        void handleException(NSException *exception)
       {
        NSMutableDictionary *info = [NSMutableDictionary    dictionary];
        info[@"callStack"] = [exception callStackSymbols]; // 调用栈信息(错误来源于哪个方法)
        info[@"name"] = [exception name]; // 异常名字
        info[@"reason"] = [exception reason]; // 异常描述(报错理由)
        然后将数据写入沙盒中。。。
       }
    
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
          // 将沙盒中的错误信息传递给服务器
          。。。。
          // 设置捕捉异常的回调(系统自带)
          NSSetUncaughtExceptionHandler(handleException);  
          return YES;
      }
    
    方法二:在main.m中
    @try {
          @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
          }
          } @catch (NSException *exception) {
            将错误信息写入沙盒中
          }
    
    方法三:第三方平台
      友盟、等等........
    

    思路:拦截崩溃信息,将崩溃信息写入沙盒中,然后上传到服务器。


    让程序直接退出

    exit(0);


    弹框提示用户程序崩溃、重启
        void handleException(NSException *exception)
        {
            [[UIApplication sharedApplication].delegate performSelector:@selector(handle)];
        }
    
        - (void)handle
        {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"意外" message:@"程序挂了" delegate:self cancelButtonTitle:@"重启" otherButtonTitles:nil, nil];
            [alertView show];
    
            // 因为程序的Runloop已经挂了,所以需要重新启动RunLoop
            [[NSRunLoop currentRunLoop] addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
            [[NSRunLoop currentRunLoop] run];
        }
    
         - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
        {
            NSLog(@"用户点击的重启");
            //重启操作
        }
    
        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions         {
    
            // 设置捕捉异常的回调
            NSSetUncaughtExceptionHandler(handleException);
    
            return YES;
        }

    相关文章

      网友评论

        本文标题:崩溃统计、重启程序

        本文链接:https://www.haomeiwen.com/subject/qeyzlttx.html