在 iOS 11 Beta 刚刚发布时,有用户在微博反馈:升级到 iOS 11 Beta 后,微信读书 App 遇到启动必 crash 的绝境,无法使用。
用户看到的界面,是我们开源的 iOS 启动连续闪退保护方案 提示。
调试发现,是一段 iOS 11 不兼容的代码引发的问题。我们通过修改不兼容代码,解决了问题。
等到现网用户反馈,为时太晚,如何把启动必 crash 问题纳入监控?
我们设计了一个特征值以判断这个问题,并扩展了 iOS 启动连续闪退保护方案,提供了日志上报接口,帮助开发者在第一时间发现启动必 crash 问题。
在每次检测到 crash 后,我们需要生成一个特征值,帮助判断 App 是否遇到启动必 crash。特征值应该包括:
我们设计特征格式如下:
1 | t1|d1|t2|d2|t3|d3|... |
---|
如果特征值为:0|0|0|0…,用户遇到了启动必 crash 的问题,且 crash 堆栈一致。
如果特征值为:0|244|0|378…,用户遇到了启动必 crash 的问题,但 crash 堆栈不一致。
如果特征值属于上述情况,认为用户遇到启动必 crash 的问题,执行指定的上报方法。
开发者可以接入实时监控系统,当上报人次符合一定条件,执行告警通知。
开发者在 iOS 项目引入 GYBootingProtection 组件后, AppDelegate+GYBootingProtection.m
,插入一行上报代码,即可把启动必 crash 纳入监控。