【问题标题】:firebase_crashlytics_collection_enabled not working in new Firebase Crashlytics SDKfirebase_crashlytics_collection_enabled 在新的 Firebase Crashlytics SDK 中不起作用
【发布时间】:2020-06-22 08:59:51
【问题描述】:

在 Fabric 将于 3 月 31 日关闭后,我正在尝试使用新的 Firebase Crashlytics SDK,目前处于测试阶段。

我会尽量确保只有在获得用户同意的情况下才会传输崩溃日志。在documentation 中,他们提到了以下内容:

默认情况下,Crashlytics 会自动为您应用的所有用户收集崩溃报告。为了让用户更好地控制他们发送的数据,您可以通过禁用自动收集和仅为选定用户初始化 Crashlytics 来为您的用户启用选择加入报告:

  1. 在您的 AndroidManifest.xml 文件中使用元数据标签关闭自动收集:

    <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />

很遗憾,这在我的应用程序中不起作用。在我故意让应用崩溃后,崩溃仍然会自动传递。

如何确保崩溃不会自动传输?

【问题讨论】:

  • 即使有一种方法可以在运行时禁用直到用户同意,您的应用仍然可能在到达请求同意点之前崩溃。
  • 但这完全没问题。那么不应该传输崩溃日志。如果用户稍后同意,则会调用 api 来主动传输所有缓存的崩溃。
  • 嗨,你找到默认禁用的方法了吗?

标签: android firebase crashlytics-android


【解决方案1】:

如果你调用sendUnsentReports(),那将override 设置为setCrashlyticsCollectionEnabled。此外,在自动收集更改生效之前,必须重新启动应用程序。

如果用户禁用了选择加入报告,发生错误,然后启用报告,则之前累积的所有未发送报告将在启用选择加入时全部发送,因此还需要在启用之前deleteUnsentReports()选择加入报告。

【讨论】:

    【解决方案2】:

    似乎对setCrashlyticsCollectionEnabled 的调用很粘。因此,如果您在应用程序的生命周期中设置一次,那么在应用程序的连续运行中,AndroidManifest.xml 中的任何内容都将被忽略。这就是发生在我身上的事情,让我想知道我的清单中的元数据设置是否被忽略了。
    您可以通过调用 `setCrashlyticsCollectionEnabled(null) 或重新安装应用程序来清除此问题。

    【讨论】:

    • setCrashlyticsCollectionEnabled(null) 使应用程序崩溃,出现未处理的异常 Failed assertion: line 186 pos 12: 'enabled != null': is not true
    【解决方案3】:

    这很可能是一个错误。升级到

    implementation("com.google.firebase:firebase-crashlytics:17.4.0")

    它将按预期工作。无需重启应用。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多