【问题标题】:Firebase setCurrentScreen duplicates log entries screen_viewFirebase setCurrentScreen 重复日志条目 screen_view
【发布时间】:2020-02-11 16:41:04
【问题描述】:

我需要在 firebase 的打开屏幕上显示统计信息(就像以前在 analytics.google 中一样)

而且我需要显示的不是真正的类名,例如 MainActivity,而是 ScreenServiceList

我创建了一个由 4 个 Activity 和 3 个 Fragment 组成的测试项目(在 MainActivity4 中)

class App : Application() {
companion object{
    lateinit var mFirebaseAnalytics: FirebaseAnalytics
}
override fun onCreate() {
    super.onCreate()
     mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
}

}

所有 Activity 包含大致相同的代码

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button2.setOnClickListener { startActivity(Intent(baseContext,Main2Activity::class.java)) }
    button3.setOnClickListener {  startActivity(Intent(baseContext,Main3Activity::class.java))}
    button4.setOnClickListener {  startActivity(Intent(baseContext,Main4Activity::class.java))}

}
override fun onResume() {
    super.onResume()
    App.mFirebaseAnalytics.setCurrentScreen(this, null, "ScreenActivity#1")
}

}

而 Activity4 有 3 个类似 Fragment 的

class Fragment1 :Fragment(){

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    val view=inflater.inflate(R.layout.fragment,container,false)
    view.fragment_title.text="====Fragment#1===="
    view.button_prev.setOnClickListener { activity!!.goToFragment(0) }
    view.button_next.setOnClickListener { activity!!.goToFragment(2) }
    return view
}
override fun onResume() {
    super.onResume()
    App.mFirebaseAnalytics.setCurrentScreen(activity!!, null, "ScreenFragment#1")
   }

}

在 Firebase 控制台 DebugView 中,当我切换屏幕时。我看到两个事件 screen_view
先连firebase_screen_class = MainActivity
第二个偶firebase_screen_class = ScreenActivity#1
对于片段,一切正常
如何不注册 MainActivity 之类的自动事件,而只注册您自己的事件,例如 ScreenActivity#1?如下图所示,条目重复,因此值不正确。例如,我们没有显示 ScreenActivity#1 18 28% 的行,而是看到 14% 的两个

【问题讨论】:

    标签: android firebase firebase-analytics


    【解决方案1】:

    解决方案当然不优雅,但也许有人会派上用场。 如果有人知道更漂亮的解决方案,那么我会很高兴看到它

        override fun onResume() {
        App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(false)
        super.onResume()
        App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(true)
        App.mFirebaseAnalytics.setCurrentScreen(this, "ScreenActivity#1", "ScreenActivity#1")
    }
    

    【讨论】:

    • 您不满足于简单地设置屏幕名称而不是覆盖屏幕类的任何具体原因?
    • 客户要求控制台中所有名称均为俄语本培训项目
    • 值得注意的是,使用此解决方法firebase_previous_class 参数将不正确 - 它会指向当前活动。
    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2016-04-05
    • 2021-04-30
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多