Ale*_*ndr 2 android google-analytics mosby firebase-analytics
如何在MVP应用程序架构上应用Firebase Analytics(例如)?(我使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
doAction(...)被称为必须.好的.
initialize()即使用户从backstack导航回屏幕,也会调用.我希望它仅在用户导航到"前方"屏幕时发送事件.它也看起来像一个糟糕的解决方案,因为它是在第一次创建时initialize()初始化Presenter时引入的方法ViewState,而不是用于记录分析事件.
听起来我必须与Presenter分享Fragment的生命周期.不好.
你能推荐什么?我必须为每个片段创建另一个实体,例如AnalyticsPresenter吗?你怎么处理这个案子?
在我看来,Analytics属于View层而不是Presenter层.因此,直接在Fragment/Activity或(我通常做的)中使用其中一个库(如lightcycle 或CompositeAndroid)来跟踪它,以便在您的Activity/Fragment中插入"Analytics组件".通过这样做,您的Fragment/Activity不包含Analytics的代码,而是分离到它自己的类(单一责任).
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |