Firebase setCurrentScreen 重复日志条目 screen_view
Firebase setCurrentScreen duplicates log entries screen_view
我需要在 firebase 中显示打开屏幕的统计信息(与之前在 analytics.google 中一样)
而且我需要显示非真实的 class 名称,例如 MainActivity,但例如 ScreenSeviceList
我创建了一个由 4 个 Activity 和 3 个片段组成的测试项目(在 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个片段像
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%
中的两个
解决方案肯定不优雅,但也许有人会派上用场。
如果有人知道更漂亮的解决方案,那么我会很高兴看到它
override fun onResume() {
App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(false)
super.onResume()
App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(true)
App.mFirebaseAnalytics.setCurrentScreen(this, "ScreenActivity#1", "ScreenActivity#1")
}
我需要在 firebase 中显示打开屏幕的统计信息(与之前在 analytics.google 中一样)
而且我需要显示非真实的 class 名称,例如 MainActivity,但例如 ScreenSeviceList
我创建了一个由 4 个 Activity 和 3 个片段组成的测试项目(在 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个片段像
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%
解决方案肯定不优雅,但也许有人会派上用场。
如果有人知道更漂亮的解决方案,那么我会很高兴看到它
override fun onResume() {
App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(false)
super.onResume()
App.mFirebaseAnalytics.setAnalyticsCollectionEnabled(true)
App.mFirebaseAnalytics.setCurrentScreen(this, "ScreenActivity#1", "ScreenActivity#1")
}