每个 app 都有性能问题,都有要修复的错误,都会 crash。 尽管我们已经非常小心了,即使我们的 app 在设备上运行一切正常,即使所有测试也都通过了我们还是不免会遇到各种无法预料的问题。
因此,我们可以使用一些技巧,通过收集正确的信息,快速定位和修复大多数 bugs 和 crashes。
1. Crash reporting tools
修复崩溃需要深入了解 app 中发生崩溃的情况。最简单的方法是进入Xcode➞Organizer➞Crashes 查看崩溃信息:
Xcode 一个很酷的地方是允许我们通过单击右上角的蓝色按钮 “Open in Project...” 直接跳转到导致崩溃的代码。
我们修复崩溃后,还可以在 Xcode 中为崩溃添加注释,然后使用右下角的“标记为已解决(Mark as Resolved)” 按钮将其标记为已解决。
将崩溃报告工具与分析相结合
Xcode 内置的崩溃报告工具已经很好用了,但是,使用 Firebase 或 Instabug 之类的第三方工具会有更多好处。
这些工具使用报告的分析功能,通过显示崩溃之前的执行事件的跟踪轨迹,使我们深入了解 crash 情况。
想了解更多,可以看这里: Fixing crashes with Firebase Crashlytics.
2. 与用户联系
修复常见错误的最有效方法之一就是与客户建立联系。用户使用 app,最清楚crash 情况。
我们可以通过创建 TestFlight 来测试 app 的新版本。
TestFlight 具有内置的报告工具,供用户报告所有发现的错误。用户可以通过截屏,点击“Done”按钮并点击“共享Beta反馈”按钮,添加注释并共享屏幕截图以提供给我们反馈:
该反馈将最终显示在 App Store Connect 中的 TestFlight 页面,其中包含各种有用的信息,例如电池信息,磁盘空间,应用程序版本和系统版本等:
以上是一种方式,除此,还有以下方法:
- 创建 Twitter 或者微博帐户,和用户互动讨论
- 添加应用内聊天功能
- 开发带有反馈表的支持页面
3. 允许用户共享诊断报告
某些情况下,您与用户联系,但仍无法解决所报告的问题。您收到了崩溃的信息,但是不知道哪些崩溃与该特定用户报告的问题有关。
所以,我们最好在 app 中提供一个选项,让用户共享 app 的诊断信息。
Collect by WeTransfer ,允许用户在其中报告问题以及诊断报告。
我们可以很轻松地将WeTransfer Diagnostics 这个开源框架添加到我们的 app 中。 它可以创建包含以下内容的报告:
- 设备信息
- 系统信息
- 系统日志
- 用户默认键
最重要的是,我们还可以轻松地添加自定义见注释,以帮助开发者解决问题。
该框架的优点在于,我们还可以轻松地自定义将最终出现在报告中的错误:
/// Support logging simple `String` messages.
DiagnosticsLogger.log(message: "Application started")
/// Support logging `Error` types.
DiagnosticsLogger.log(error: ExampleError.missingData)
这样可以更轻松地解决特定问题。
显然,我们应该考虑敏感数据和《通用数据保护条例》( GDPR),仅共享能解决问题的信息,避免共享私有数据。
4. 与用户相关的崩溃
大多数崩溃报告工具都允许设置特定用户标识符。这使得我们可以过滤特定用户的崩溃。我们甚至可以将其作为超链接添加到自定义“诊断HTML”报告中:
static var firebaseCrashesURL: String {
guard let identifier = Tracker.userIdentifier else { return "Unknown" }
return "<a href="https://console.firebase.google.com/u/0/project/your-project-name/crashlytics/app/ios:your.bundle.identifier/search?time=last-seven-days&type=crash&q=(identifier)" target="_blank">(identifier)</a>"
}
本示例创建了一个链接,在 Firebase 中直接打开该链接,可以查看特定用户遇到的问题。
注意,请确保对标识符进行哈希处理,使其符合 GDPR 要求,而不是公开获取用户的任何隐私数据。
总结
以上 4 条小技巧,可以帮助我们快速定位错误所在,从而节省开发时间,让我们可以一心用在开发项目功能上去。
2020.10.24 夜
上海 二联家园