崩溃防护提供异常崩溃的保护,可以有效避免用户闪退,规避常规问题的大规模崩溃,增加App稳定性,提升用户体验。异常防护的集成对业务代码没有任何侵入性,能够有效的防止问题的发生,并将问题上报到平台,帮助您及时发现问题。
崩溃防护子模块包括:USEL、Container、Notification、KVO、KVC、NSUserefaults。各个模块与值的对应关系:
子模块功能 | 下发值 | 含义 |
---|---|---|
USEL | 1(1<<0) | Unrecognized Selector防护。 |
Container | 2(1<<1) | 容器防护。 |
Notification | 4(1<<2) | 通知中心防护。 |
KVO | 8(1<<3) | 系统提供的监听某一对象属相变化的功能,但在使用中可能存在诸多隐藏问题,KVO防护就是针对该类型的防护。 |
KVC | 16(1<<4) | 利用运行时获取和设置参数的一种方式,使用中若操作的对象不存在对应的key则会造成崩溃,KVC防护就是针对该类型的防护。 |
NSUserefaults | 32(1<<5) | 对NSUserefaults进行防护,防止因写入非标准类型造成的崩溃。 |
开启所有功能值计算公式为:
finalValue = 开启功能1的下发值+开启功能2的下发值+···+开启功能6的下发值
例如:
在数据创建时,如果传入对象有nil时,系统会产生崩溃。崩溃防护接入后系统不会产生崩溃,但默认情况下,返回的数组为nil。
模式 | 平台字段 | 默认状态 |
---|---|---|
严格模式 | 优先保证数组索引的正确性。创建数组时,若传入的值包含空值,则创建的数组为空。
| ✔ |
兼容模式 | 优先保证数组创建成功。创建数组时,若传入的值包含空值,则剔除其中的空值,并创建数组。
| ✘ |
崩溃防护中的统计数据可以帮助应用拦截的异常,但后续仍需要对issue做处理和修复。
您可以通过以下筛选条件进行iOS系统的数据筛选:
时间、崩溃详情、设备ID、User ID、issue新增状态、前后台、越狱状态、系统版本、机型、APP版本、APP小版本号、APM SDK版本、下载渠道、省份、使用时长、解析情况、APP页面、issue状态、处理人、标签、自定义维度、PV自定义维度。
崩溃拦截趋势展示了筛选条件下崩溃拦截指标的趋势图,您也可以将趋势图按照分组维度展示。指标数据的右侧可以查看与上一周期相比崩溃拦截数据的变化。
指标说明:
指标 | 说明 |
---|---|
拦截崩溃次数 | 已成功拦截的崩溃的次数 |
拦截崩溃率 | 筛选条件下的拦截崩溃次数/筛选条件下的总launch数 |
拦截崩溃人数 | 筛选条件下的去重拦截崩溃人数 |
拦截崩溃用户比例 | 筛选条件下发生拦截崩溃错误的去重UV数/筛选条件下的去重总UV数 |
用户数 | 筛选条件下已拦截崩溃的去重UV数 |
崩溃拦截分布通过多维分析来了解已拦截的异常崩溃的分布情况以定义问题。
拦截异常崩溃列表中展示了同一类已拦截的异常崩溃聚合后的issue数据,包括影响用户数、发生次数、崩溃率、最近发生时间、日志上报时间、状态、处理人。
.xlsx
的文件格式展示列表中的数据。详情拦截崩溃趋势展示了该类issue的崩溃数和影响用户数两个指标的变化趋势。
详情拦截崩溃趋势图和列表拦截崩溃趋势不同,区别如下:
详细信息可以查询单次crash的各字段属性。
参数说明:
Key | Value |
---|---|
reason | 根据现场情况分析给的结果 |
protect_type | 防护崩溃的类型所在的子模块 |
在符号表页面,手动上传符号表。
上传符号表后效果如下:
现场数据展示了发生崩溃防护时的程序运行状态。
自定义日志支持回捞、上报自定义的日志内容,包括进程-线程信息、日志级别、日志详情内容,并支持检索筛选。