Отключить Crashlytics/Answers на основе пользовательских настроек

Я добавляю новые предпочтения в своем приложении, чтобы позволить пользователю отказаться от аналитических отчетов. Я использую в своем приложении Crashlytics и ответы от 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, когда пользователь решает не разрешать аналитику?

Ответ 1

Вы можете перенести все свои вызовы на Answers.getInstance в новый класс, который проверяет ваши предпочтения и ничего не делает, если он не включен? IE: Вместо Answers.getInstance(). LogCustom() WrappedAnswers.getInstance(). LogCustom(). И завернутые ответы выполнили бы проверку if/else в logCustom()

Ответ 2

Мог бы сделать что-то вроде этого без использования 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 будет отключен, иначе он будет включен.