【问题标题】:How to track page view with Firebase Analytics in a web, single page app?如何在 Web 单页应用程序中使用 Firebase Analytics 跟踪页面浏览量?
【发布时间】:2019-12-13 22:15:23
【问题描述】:

我正在尝试通过 Firebase 分析跟踪简单的事件和页面/视图。

我有一个渐进式网络应用程序 (SPA)。这是一款全屏游戏,不使用浏览器历史记录。

老实说,我对 Google 的文档有点困惑,有时他们只解释了它在 ios/Android 中的工作原理,而不是在 web 中的工作原理。此外,Firebase 分析不同于“普通的 Google 分析”。

Firebase 分析 API 并不多:

analytics().logEvent()
analytics().setAnalyticsCollectionEnabled()
analytics().setCurrentScreen()
analytics().setUserId()
analytics().setUserProperties()

虽然“Google Analytics 文档”确实有 section about SPA's,但我还没有找到如何对 Firebase 分析执行相同操作,例如手动发送页面浏览量,如下所示:

ga('set', 'page', '/new-page.html');
ga('send', 'pageview');

我曾尝试使用setCurrentScreen,但它什么也没做。 帮助表示赞赏。

【问题讨论】:

    标签: javascript firebase google-analytics single-page-application firebase-analytics


    【解决方案1】:

    我也无法找到一个包含所有这些信息的地方,所以这是我如何让它工作的。

    导入

    如果您使用的是npm,请确保导入分析:

    import * as firebase from "firebase/app";
    import "firebase/analytics";
    const analytics = firebase.analytics;
    

    Analytics 自动随附最新的 Firebase SDK。

    配置

    确保在 Firebase 项目设置(集成标签)中启用了“Google Analytics”。此外,请确保 Firebase 配置在代码中指定了 measurmentId: "ID_HERE" - 此值也可以在 Firebase 项目设置(常规选项卡)中找到。

    使用

    analytics().setCurrentScreen(window.location.pathname) // sets `screen_name` parameter
    analytics().logEvent('screen_view') // log event with `screen_name` parameter attached
    

    其他信息

    "page_view" 事件似乎默认自动记录。我不知道为什么,但您可以使用该事件的计数来跟踪有多少人重新加载/访问该应用。

    相关链接:


    使用 React Router 进行日志记录

    React 很常见,所以我还将列出我使用它进行日志记录的解决方案。将<AnalyticsComponent /> 放在<BrowserRouter> 声明之间。

    const logCurrentPage = () => {
      analytics().setCurrentScreen(window.location.pathname)
      analytics().logEvent('screen_view')
    };
    
    const AnalyticsComponent = () => {
      const history = useHistory();
      useEffect(() => {
        logCurrentPage(); // log the first page visit
        history.listen(() => {
          logCurrentPage();
        });
      }, [history]);
      return (<div></div>);
    };
    

    【讨论】:

    • 在尝试修复损坏的 firebase 分析时遇到了这个问题,整洁。您没有返回空 div 的 null insetad 是否有原因?
    • setCurrentScreen 已被弃用。请参阅下面的回复
    • 浏览器位置改变后不取消所有通话吗?
    【解决方案2】:

    调用setCurrentScreen 并不会自行记录任何事件。而是根据docs,给后续事件添加firebase_screen参数。

    然而,在我的 SPA/PWA 中,我通过记录一个单独的 screen_view 事件来跟踪屏幕视图:

    const handleHashChange = async () => {
        const hash = document.location.hash;
    
        firebase.analytics().logEvent('screen_view', { screen_name: hash.substring(1) });
    }
    
    handleHashChange();
    window.addEventListener("hashchange", handleHashChange);
    

    【讨论】:

    • 我明白了。那么在 Firebase 中,只有“事件”而已吗?由于某些原因,我的活动没有显示在仪表板中。
    • 您如何跟踪在屏幕上花费的时间? @Kev
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多