2024 年 5 月 1 日之后,提交到 Apple App Store 的应用程序必须遵守描述所需原因 API 的使用。在准备我的 Flutter 应用程序以满足这些要求时,我无法找到在使用 Firebase Crashlytics 时如何做到这一点。具体来说,这部分让我感到困扰(引用自上面的链接):
磁盘空间API
...
7D9E.1
声明此原因,以便在使用设备的人选择提交的可选错误报告中包含磁盘空间信息。磁盘空间信息必须作为报告的一部分突出显示给相关人员。
仅在用户明确选择提交特定错误报告(包括磁盘空间信息)后,才能将因此访问的信息或任何派生信息发送到设备外,并且仅用于调查或响应错误报告的目的。
Firebase Crashlytics 确实会收集和发送这样的信息,如果我在 Firebase 控制台中检查一些现有事件,我可以在事件的
RAM free
部分下看到 Data
以及其他项目。
如果我理解正确的话,一般来说,请求用户许可发送错误报告数据是不够的。根据上面的引用我必须专门请求每个错误报告的许可,并显示报告的内容,包括可用内存。
如何在 Flutter 应用程序中使用 Firebase Crashlytics 做到这一点?(Crashlytics 本身已正确添加到我的应用程序中并且工作正常,我可以在控制台中看到测试和实际错误报告。)。
我知道我可以禁用有关错误的自动 Crashlytics 数据收集,并为特定用户打开和关闭它,详情请参阅此处。
我知道,如果禁用自动收集,我可以使用 checkForUnsentReports 检查未发送的 Crashlytics 报告。
我知道,根据用户的选择,我可以使用 sendUnsentReports 发送报告,也可以使用 deleteUnsentReports 删除这些报告。
我尝试根据前面的步骤实施该解决方案,我希望能够访问错误报告中收集的所有数据,包括可用空间。我的计划是按照 Apple 的要求向用户显示这些内容,并提供发送或丢弃错误报告的选择。
但结果我无法访问这些信息,我只能发送或删除所有未发送的错误报告。
我还尝试从我的代码调用
FirebaseCrashlytics.instance.recordFlutterFatalError
和 FirebaseCrashlytics.instance.recordError
的位置获取此信息,但我发现我只能从这里获取错误详细信息和堆栈跟踪。
问题中讨论的必需原因 API 已在 Firebase 10.22.0 中删除,因此可以选择更新到较新的 SDK 版本。
Firebase 10.22.0 对应于
firebase_core 2.26.0
(变更日志) 和 firebase_crashlytics 3.4.17
。