Отключить 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 будет отключен, иначе он будет включен.