【问题标题】:Disable Crashlytics/Answers based on user setting根据用户设置禁用 Crashlytics/Answers
【发布时间】:2015-08-13 15:08:35
【问题描述】:

我在我的应用上添加了一个新的首选项,以允许用户选择退出分析报告。我在我的应用程序 Crashlytics and Answers by Fabric 中使用。

我在 onCreate 中有这段代码:

if (PreferenceHelper.getAllowAnalytics(context)) {
            Fabric.with(this, new Crashlytics());
        } else {
            //no crash or answers to be sent
        }
}

每次我想发送一个事件时,我都会这样做:

Answers.getInstance().logCustom(new CustomEvent("test event"));

当用户允许时,这很有效。 当用户决定不允许分析时,我应该如何处理else

【问题讨论】:

  • 您可以将所有对 Answers.getInstance 的调用包装在一个新类中,该类会检查您的偏好,如果未启用则什么都不做? IE:而不是 Answers.getInstance().logCustom() WrappedAnswers.getInstance().logCustom()。包装好的答案会在 logCustom() 中进行 if/else 检查
  • @natez0r 请将此作为答案,因为这是我现在使用的路径

标签: android crashlytics twitter-fabric


【解决方案1】:

可以在不使用 if/else 的情况下做这样的事情:

CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(!PreferenceHelper.getAllowAnalytics(context)).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());

这样,如果您的 getAllowAnalytics 方法返回 false,则 Fabric/Crashlytics 将被禁用,否则将被启用。

【讨论】:

  • 这将处理 Crashlytics,但 Answers 怎么样?
  • 我相信您需要启用 Crashlytics 才能使用 Answers。如果 Crashlytics 被禁用,我认为 Answers 不会起作用。
【解决方案2】:

您可以将所有对 Answers.getInstance 的调用包装在一个新类中,该类会检查您的偏好,如果未启用则什么都不做? IE:而不是 Answers.getInstance().logCustom() WrappedAnswers.getInstance().logCustom()。包装好的答案会在 logCustom() 中进行 if/else 检查

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多