No Description

GYBootingProtection.h 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // GYBootingProtection.h
  3. // GYMonitor
  4. //
  5. // Created by jasenhuang on 15/12/22.
  6. //
  7. #import <Foundation/Foundation.h>
  8. typedef BOOL (^BoolCompletionBlock)(void);
  9. typedef void (^RepairBlock)(BoolCompletionBlock);
  10. typedef void (^ReportBlock)(NSInteger crashCounts);
  11. /**
  12. * 启动连续 crash 保护。
  13. * 启动后kCrashOnLaunchTimeIntervalThreshold秒内crash,反复超过kContinuousCrashOnLaunchNeedToReport次则上报日志,超过kContinuousCrashOnLaunchNeedToFix则启动修复程序
  14. */
  15. @interface GYBootingProtection : NSObject
  16. /**
  17. * 启动连续 crash 保护方法。
  18. * 前置条件:在 App 启动时注册 crash 处理函数,在 crash 时调用[GYBootingProtection addCrashCountIfNeeded]。
  19. * 启动后kCrashOnLaunchTimeIntervalThreshold秒内crash,反复超过kContinuousCrashOnLaunchNeedToReport次则上报日志,超过kContinuousCrashOnLaunchNeedToFix则启动修复程序;当所有操作完成后,执行 completion。在 kCrashOnLaunchTimeIntervalThreshold 秒后若没有 crash 将 kContinuousCrashOnLaunchCounterKey 计数置零。
  20. * @param reportBlock 上报逻辑,
  21. * @param fixBlock 修复逻辑,完成后执行 [self setCrashCount:0];[self setIsFixing:NO];completion();
  22. * @param completion 完成逻辑,无论是否修复,都会执行completion一次
  23. * @return (BOOL)completion 的返回值,当不需要修复且 completion 有定义时;
  24. * NO 在需要修复时或者其他情况
  25. */
  26. + (BOOL)launchContinuousCrashProtect;
  27. // 启动连续 crash 计数
  28. + (void)setCrashCount:(NSInteger)count;
  29. + (NSInteger)crashCount;
  30. // 是否正在修复
  31. + (BOOL)isFixingCrash;
  32. // 设置日志逻辑
  33. + (void)setLogger:(void (^)(NSString *))logger;
  34. // 设置上报逻辑,参数 crashCounts 为启动连续 crash 次数
  35. + (void)setReportBlock:(ReportBlock)reportBlock;
  36. // 设置修复逻辑
  37. + (void)setRepairBlock:(RepairBlock)repairtBlock;
  38. + (void)setBoolCompletionBlock:(BoolCompletionBlock)boolCompletionBlock;
  39. // 测试彩蛋开关:是否制造启动 crash
  40. + (void)setStartupCrashForTest:(BOOL)isOn;
  41. // 是否显示测试彩蛋(需要修复时不显示)
  42. + (BOOL)startupCrashForTest;
  43. // 删除Document Library Caches所有文件
  44. + (void)deleteAllFilesUnderDocumentsLibraryCaches;
  45. @end