A tool for detecting and repairting continuous launch crash of iOS App
Objective-C Ruby
Switch branches/tags
Nothing to show
Clone or download
liuslevis only protect tapping icon launch
If it is push launch or other types of launch, launchOptions!=nil.
Latest commit 1c314fe Jun 1, 2016
Permalink
Failed to load latest commit information.
demo remove UIAlertView+Block May 23, 2016
img img May 20, 2016
src
.gitignore Initial commit May 18, 2016
GYBootingProtection.podspec
LICENSE Initial commit May 18, 2016
README.md Update README.md May 23, 2016

README.md

GYBootingProtection

A tool for detecting and repairting continuous launch crash of iOS App

说明

引入项目

  1. src 目录下所有文件拖拽到你的 Xcode 项目

  2. AppDelegate+GYBootingProtection.monBeforeBootingProtection 方法中添加检测前需要执行的代码,比如设置crash上报:

- (void)onBeforeBootingProtection {
  [GYBootingProtection setLogger:^(NSString *msg) {
      // setup logger
      NSLog(@"%@", msg);
  }];
  
  [GYBootingProtection setReportBlock:^(NSInteger crashCounts) {
      // setup crash report
  }];
}
  1. onBootingProtection 方法中添加修复逻辑,比如删除文件:

    - (void)onBootingProtection {
    	// 检查 JSPatch 更新
    	...
    	// 删除 Documents Library Caches 目录下所有文件
    	[GYBootingProtection deleteAllFilesUnderDocumentsLibraryCaches];
    	...
    }
    

    如需执行异步的修复逻辑,在 onBootingProtectionWithCompletion: 方法添加修复逻辑,并在完成修复后调用 completion :

    - (void)onBootingProtectionWithCompletion:(BoolCompletionBlock)completion {
    	[self onBootingProtection];
    	// 异步修复
    	[self asyncRepairWithCompletion:^(void) {
        	// 正常启动流程
    		if (completion) completion();
    	}];
    }
    

测试与使用

  1. 首先制造连续闪退场景:

启动后 5 秒内,双击 Home 通过上划手势 kill 掉 App,重复多次。(也可以在代码里人为制造crash)

  1. 当连续闪退超过 5 次时,会提示用户修复:

img

  1. 用户轻触修复,App 重置初始状态,连续闪退问题解决:

img