Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase setCurrentScreen()作为第一个事件不存在';t记录正确的值_Android_Firebase_Events_Logging_Firebase Analytics - Fatal编程技术网

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()
采用三个参数。