我需要在错误发生后立即发送报告,但Crashlytics只在我重新启动应用程序时发送报告。
我试图遵循文档并以不同的方式实现这一点,但每次似乎都会导致相同的结果,即Crashlytics只在我重新启动应用程序后发送报告。我知道这是预期的行为,但对于我的应用程序来说,这完全没有用。
main.dart
...
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(false);
...
AndroidManifest.xml
...
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
...
firebase_util.dart
...
await FirebaseCrashlytics.instance
.recordError(error, stackTrace, printDetails: true)
.then((value) async => await FirebaseCrashlytics.instance.sendUnsentReports());
...
我做错了什么?
如果您使用的是最新的Crashlytics SDK版本,Android SDK会在崩溃发生后尝试发送崩溃报告。
但不幸的是,在iOS中,这种情况只有在重新启动应用程序后才会发生。据我所知,这是为了避免在发出网络请求时应用程序被关闭的问题。
关于setCrashlyticsCollectionEnabled(false(,这是为了让用户更好地控制他们的数据。您可以在清单(适用于Android(或Info.plist(适用于iOS(中将其设置为false,以防止Crashlytics发送崩溃数据。这解释了为什么在调用时没有发送崩溃
FirebaseCrashlytics.instance.sendUnsentReports()
然后你可以征求用户的同意,如果他们同意了,你可以用将这个值设置为true
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true)
完成此操作后,Crashlytics将开始收集和发送崩溃报告。但它将遵循上面的过程。