Android Firebase setCurrentScreen()作为第一个事件不存在';t记录正确的值
我有Android Firebase setCurrentScreen()作为第一个事件不存在';t记录正确的值,android,firebase,events,logging,firebase-analytics,Android,Firebase,Events,Logging,Firebase Analytics,我有ViewPager和Tabs,因此当用户在选项卡之间切换时,我会将自定义屏幕名称记录到Firebase Analytics问题是我的第一个事件没有记录。为什么? 是否会因为记录了自动screen\u view事件(没有我需要正确分析数据的firebase\u screen参数)且该自动事件具有“更高优先级”并覆盖我的事件而发生这种情况 或者我可能在错误的位置记录了我的第一个事件(onCreatemethod) 简化代码: public class SecondActivity extends
ViewPager
和Tabs
,因此当用户在选项卡之间切换时,我会将自定义屏幕名称记录到Firebase Analytics问题是我的第一个事件没有记录。为什么?
是否会因为记录了自动screen\u view
事件(没有我需要正确分析数据的firebase\u screen
参数)且该自动事件具有“更高优先级”并覆盖我的事件而发生这种情况
或者我可能在错误的位置记录了我的第一个事件(onCreate
method)
简化代码:
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";
}
}
}
原因是,引用: 如果您的应用程序不使用 您可能希望为每个屏幕设置单独的UIViewController或活动 跟踪,如在游戏中 因此,您不能在带有选项卡的
活动中实际更改它,它在每个活动中都是唯一的。此外,如果您将screenclassroverride
设置为null
,则会将其恢复为默认值,请参见以下内容:
屏幕类的名称。默认情况下,这是
目前的活动。设置为null以还原为默认类名
我建议您在选项卡中使用view\u item
来满足您的这一需求,并将其以独特的方式发送,以更好地满足您的需求。但是如果您想知道为什么它没有触发第一个,只需在onCreate
上这样尝试即可:
FirebaseAnalytics.getInstance(this).setCurrentScreen(SecondActivity.this, "SecondActivity");
可能是firebase无法设置CurrentScreen,因为它没有从onCreate()中的SecondActivity.this获取活动。类似的事情也发生在我身上
有一些解决方法,比如将其放在OnGlobalYout()或onResume()中。原因可能是在创建新活动后太快发送该事件。在Resume或onGlobalLayout中调用不是解决方案,而是一种解决方法
当我调试项目中的类似问题时,我发现有一些日志正在打印,如下所示:
V/FA:屏幕暴露时间小于1000毫秒。未发送事件
我的理解是,事件必须以至少1000毫秒的间隔发送(请记住,创建新活动时,库会自动发送事件)
我希望能有更多的文档记录,我花了这么多时间处理与丢失分析事件相关的问题…您是否禁用了自动屏幕视图跟踪器?看看如何在android中实现这一点?正如我从帖子中看到的:“Google Analytics for Firebase不支持仅手动屏幕报告”。但也许在Android版本中,它的工作原理不同。我的错。我没有注意到这是关于Android的,而不是IOS。我将SecondActivity更改为this
,但仍然不起作用。我的原始帖子未经编辑。.setCurrentScreen()
采用三个参数。