我ViewPager
Tabs
,因此当用户在标签之间切换时,我会将自定义屏幕名称记录到Firebase Analytics。 问题是我的第一个事件没有记录。为什么呢?
是否会发生因为记录了自动screen_view
事件(没有firebase_screen
参数我需要正确分析数据)并且此自动事件具有更高优先级"并覆盖我的活动?
或者我可能将我的第一个事件记录在错误的地方(onCreate
方法)?
简化代码:
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
(...)
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
FirebaseAnalytics.getInstance(SecondActivity.this).setCurrentScreen(SecondActivity.this, getTabNameForLogging(position), null);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//send event because onPageSelected isn't triggered at activity/viewpager start-up
FirebaseAnalytics.getInstance(this).setCurrentScreen(this, "TAB 0", null);
}
private String getTabNameForLogging(int position) {
switch (position) {
case 0:
return "TAB 0";
case 1:
return "TAB 1";
case 2:
return "TAB 2";
default:
return "invalid position";
}
}
}
答案 0 :(得分:1)
原因可能是在创建新活动后过早发送该事件。将调用放在onResume或onGlobalLayout上不是解决方案,而是一种解决方法。
当我调试项目中的类似问题时,我发现有一些日志打印如下:
V / FA:屏幕暴露时间少于1000毫秒。活动未发送。
我的理解是,事件必须至少间隔1000毫秒发送一次(请记住,在创建新活动时库正在发送自动事件)。
我希望它有更多记录,我花了很多时间在与缺少分析事件有关的问题上……
答案 1 :(得分:0)
可能是firebase无法setCurrentScreen,因为它没有从onCreate()中的SecondActivity.this获取活动。类似的事情发生在我身上。
有一些解决方法,比如把它放在onGlobalLayout()或onResume()上。
答案 2 :(得分:-1)
原因是,引用official documentation:
如果您的应用不使用,则手动跟踪屏幕非常有用 为您可能希望的每个屏幕分隔UIViewController或Activity 跟踪,例如在游戏中。
因此,您无法在Activity
内使用标签对其进行实际更改,但每个Activity
都是唯一的。另外,如果您将screenClassOverride
设置为null
,则会将其恢复为默认值,请参阅以下内容:
屏幕类的名称。默认情况下,这是该类的名称 当前的活动。设置为null以恢复为默认类名。
我建议您在标签中使用view_item
来满足您的这种需求,并将其发送给您,以便更好地满足您的需求。但是,如果你想知道为什么它没有解雇第一个只是在onCreate
上尝试这样:
FirebaseAnalytics.getInstance(this).setCurrentScreen(SecondActivity.this, "SecondActivity");