Как применять Firebase Analytics (например) в архитектуре приложений MVP? (Я использую Mosby для создания MVP)Android MVP и Analytics
Я хочу отслеживать события "opening screen"
, "do click action"
.
Есть, как я отправляю "opening screen"
событие.
private const val ANALYTICS_SCREEN_NAME = "ask_password"
private const val ANALYTICS_ACTION_DONE = "done"
class AskPasswordPresenter : MyDiaryPresenter<AskPasswordView> {
@Inject
constructor(analytics: AnalyticsManager) : super(analytics) // AnalyticsManager is wrapper around Firebase Analytics API
override fun initialize() { // this method called when new ViewState created
super.initialize()
analytics.doScreenOpened(ANALYTICS_SCREEN_NAME)
}
fun done(password: String) { // called when user click on 'Done' button
...
analytics.doAction(ANALYTICS_SCREEN_NAME, ANALYTICS_ACTION_DONE)
}
}
DoAction (...) называется как это необходимо. Хорошо.
initialize()
, вызываемый даже тогда, когда пользователь переходит к экрану с задней стороны. Я хочу, чтобы он отправлял событие ТОЛЬКО, когда пользователь переходит на экран в «переднем направлении». Это также похоже на плохое решение, как методinitialize()
, введенный для инициализацииPresenter
, когдаViewState
был создан в первый раз, а не для регистрации событий аналитики.
Похоже, что я должен поделиться жизненным циклом Фрагмента с презентатором. Нехорошо.
Что вы можете порекомендовать? Должен ли я создать другой объект, например AnalyticsPresenter для каждого фрагмента? Как вы справляетесь с этим делом?
Я не согласен, что 'Analytics' принадлежит к слою' View'. «Просмотр» - это отображение информации, а не отслеживание ее. Но, ничего себе! 'CompositeAndroid' выглядит как решение для моего _" extends hell "_, спасибо в любом случае! :) – Alexandr