Android MVP and Analytics



如何在MVP应用程序架构上应用Firebase分析(例如)?(我用Mosby构建MVP)

我想要跟踪"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)
    }
}
  1. doAction(…)在必须时调用。好的。

  2. initialize()调用,即使用户从backstack导航回屏幕。我希望它发送事件只有当用户导航到屏幕在"前方向"。这看起来也是一个糟糕的解决方案,因为initialize()方法是在第一次创建ViewState时引入的,用于初始化Presenter,而不是用于记录分析事件。

听起来我必须把Fragment的生命周期分享给Presenter。不好。

你能推荐什么吗?我必须为每个片段创建另一个实体,如AnalyticsPresenter吗?你是怎么处理这个案子的?

在我看来,分析属于视图层而不是演示层。因此,直接在Fragment/Activity中跟踪它,或者(我通常做的)使用像lightcycle这样的库之一或CompositeAndroid插入一个"分析组件"到你的活动/片段。通过这样做,您的Fragment/Activity不包含用于分析的代码,而是将其解耦到自己的类(单一责任)。

我认为分析属于演示者,但正如我回答的类似问题一样,在视图中有分析更容易跳转到按钮/标签/…定义并查看此按钮在UI中的位置,并更好地了解要为GAnalytics的类别,动作,标签和值参数发送什么。我想我不需要提及演示器必须没有任何android特定的依赖,所以你不能跳转到按钮/标签/…来自演示者的定义。关于

最新更新