根据用户设置禁用 Crashlytics/Answers

Disable Crashlytics/Answers based on user setting

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

我在 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

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

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

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

您可以将对 Answers.getInstance 的所有调用包装在一个新的 class 中,该 class 会检查您的偏好,如果未启用则什么也不做?即:而不是 Answers.getInstance().logCustom() 包装Answers.getInstance().logCustom()。包装好的答案会在 logCustom()

中进行 if/else 检查