【问题标题】:How to send screen view event, in order to help Firebase prediction make more accurate prediction如何发送屏幕浏览事件,以帮助 Firebase 预测做出更准确的预测
【发布时间】:2026-01-22 01:30:01
【问题描述】:

我有一个Activity,在ViewPager 中有多个Fragment

目前,这是我将屏幕视图事件发送到 Google Analytics 和 Firebase 的方式


public static void trackView(Activity activity, String view) {
    trackFBView(activity, view);
    trackGAView(view);
}

private static void trackFBView(Activity activity, String view) {
    if (activity == null) {
        return;
    }

    FirebaseAnalytics firebaseAnalytics = getFirebaseAnalytics();
    if (firebaseAnalytics == null) {
        return;
    }

    firebaseAnalytics.setCurrentScreen(activity, view, null);
}

private static void trackGAView(String view) {
    Tracker tracker = Utils.getTracker();
    if (tracker == null) {
        return;
    }
    tracker.setScreenName(view);
    tracker.send(new HitBuilders.ScreenViewBuilder().build());
}

public static FirebaseAnalytics getFirebaseAnalytics() {
    if (false == isGooglePlayServicesAvailable()) {
        return null;
    }

    return FirebaseAnalytics.getInstance(JStockApplication.instance());
}

在我的ViewPager 的监听器中,这就是我发送屏幕视图事件的方式。

private ViewPager.OnPageChangeListener getOnPageChangeListener() {
    return new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            if (position == 0) {
                Utils.trackView(DetailedStockFragmentActivity.this, "InfoFragment");

经过一些测试,我意识到我确实在 GA 中收到了屏幕视图事件,但在 Firebase 中没有。

后来,我意识到firebaseAnalytics.setCurrentScreen 实际上并没有向 Firebase 发送屏幕视图事件。 firebaseAnalytics.setCurrentScreen 只是准备一个隐式参数。它只会在下一个事件期间发送到 firebase。

目前,在我的片段中,我没有明确触发任何事件。

我想知道,为了帮助 Firebase 做出更好的预测(帮助 Firebase 识别用户正在查看哪个屏幕),我想知道我是否应该如下显式发送​​“Screen View”事件?

private static void trackFBView(Activity activity, String view) {
    if (activity == null) {
        return;
    }

    FirebaseAnalytics firebaseAnalytics = getFirebaseAnalytics();
    if (firebaseAnalytics == null) {
        return;
    }

    firebaseAnalytics.setCurrentScreen(activity, view, null);

    // Question: Should I do this to help Firebase makes better prediction?
    firebaseAnalytics.logEvent(view + "_ScreenView", null);
}

【问题讨论】:

    标签: java android firebase firebase-analytics firebase-predictions


    【解决方案1】:

    我认为这里有一些误解。

    首先,正如您所注意到的,setCurrentScreen 创建了一个自动附加到未来事件参数。事件是唯一发送到 Firebase 并附加参数的东西——参数只能与事件相关。 “屏幕参数”比普通参数更特殊一点,因为它们出现在崩溃报告日志中,您可以更轻松地使用它们来创建受众。这个answer 总结了我刚才所说的很好。

    第二个误解是关于 Firebase 预测的工作原理。截至今天的预测只能对事件进行。也就是说,如果您创建自定义预测,它不会使用任何参数,只能预测用户是否会执行某个操作(事件)。

    对于你的情况,我需要更多地了解你想要做什么。如果您正在寻找用户参与度,那么“流失”预测已经包含了这一点。 (不,记录分析事件不会影响预测,因为它基于全局“用户是否在使用这个应用程序”的想法。)另一方面,如果你想知道是否用户正在使用您的应用程序的一部分,那么您将创建一个自定义事件,如 select_stock 并使用预测来猜测用户是否会查看股票。我喜欢将预测或 A/B 测试视为用于衡量参与度或正在执行的特定操作的增加。

    作为一般经验法则,您应该为您的应用添加用户操作,而不是被动观看。例如,您可以针对用户选择股票、收藏、分享、搜索股票等进行操作。然后,在预测或 A/B 测试中,您可以查看所做的更改如何影响用户整体参与的特定部分——“用户做的 X 多还是少?”

    TL;DR:不,记录事件不会影响流失预测,因为它们是一般性的,“这个应用程序预计会在接下来的 7 天内使用吗?”但是,您可能会尝试确定用户是否会执行或多或少的某个操作,然后记录一个事件以用于预测或 A/B 测试。

    predefined predictions 的信息,using the predictions feature 的概述,以及与full length example of how predictions can be used 的对话。

    编辑、回复评论:

    首先我想说的是,我不是 Firebase 工程师,我怀疑 Google 员工会与您分享他们的商业机密,所以我主要是在这里猜测。我将使用结帐示例,因为这是我能想到的最简单的示例。

    好的,要尝试理解预测,我们需要先了解一点机器学习。如果您考虑一下,ML 模型有点愚蠢:它们只是试图将一组输入映射到一些输出数字(概率)。由于 Predictions 不接受事件参数,我猜想 Google 会提供给定用户会话期间发生的分析事件序列。 AFAIK,向 ML 模型提供输入的顺序无关紧要,因此不会考虑事件发生的顺序(Google 可能已经想出了解决方法,不知道)。

    有了我们对 ML 模型的假设,我们可以回到我们的结帐示例。基本上,我认为您实际上只会通过跟踪用户访问的屏幕来误导或至少记录无意义的事件。假设用户浏览了“购物车”、“输入您的地址”和“结帐”屏幕。在这种情况下,模型将进行自我训练,以查看这些事件集与购买高度相关。

    你可能会想,“嗯,那太好了!”不是那么快,这种预测是没有用的,因为它实际上并没有预测任何东西。它只是说,“哦,看,进入结账屏幕的用户通常会购买东西。”在这种情况下,我认为记录屏幕事件实际上会使您的预测更糟:假设用户访问了结帐屏幕,但随后因为害怕给你信用卡或其他东西而离开。模型会想,“他们访问了那个屏幕,所以他们完全会买东西”,但这是错误的。

    另一方面,对我来说,我之前提到的记录用户操作会更有用。例如,可以使用item_added_to_card 事件的数量来训练更准确的预测,以实际预测事物。用户添加到购物车的商品越多,他们购买商品的意愿就越大。

    再次重申,我对您的应用了解不多,但记录点击事件以查看详细的文章窗格、喜欢文章或分享文章,在我看来,它们可以提供比仅查看文章窗格更多的见解。但是,我认为这取决于您拥有什么样的用户行为。如果您购买过东西的大多数用户也在文章屏幕上花费大量时间,那么是的,我不明白记录事件会有什么坏处。

    我想表达的一般观点是,我认为预测在衡量用户参与度的事件上会做得更好。因此,被动收视率可能会起作用,但如果某些用户只想保持该屏幕打开,或者文章视图甚至是您的默认选项卡怎么办?然后它并没有真正为模型提供任何新信息,因为几乎所有用户都会通过该屏幕。我的经验法则是,“如果用户点击它,就记录它。”然后,您肯定会获得大量分析事件供 ML 模型查找模式,例如点击查看文章的用户更有可能购买商品。

    PS:逆向工程这种模型很难,我的假设可能完全错误。

    【讨论】:

    • 但是,奇怪的是,Firebase 预测可以做出准确的预测,而不提供用于学习目的的屏幕信息。例如,实际上,查看StockNewsFragment 的用户比查看StockChartFragment 的用户更有可能执行in_app_purchase。在不提供准确的屏幕浏览信息的情况下,Firebase 预测将如何预测用户是否可能执行in_app_purchase
    • 查看我的更新答案,太长了,无法放入评论中。 ?
    • Laurence 刚刚发布了 this article,确认 Predictions 正在使用 TensorFlow,但没有详细说明。
    最近更新 更多