0

假设一个用户使用user_id(1000)email(user101@example.com)登录到基于 reactjs 的 Web 应用程序并浏览了几页2mins,然后移动到其他应用程序选项卡/窗口,30mins然后回到 Web 应用程序并浏览了应用程序5more几分钟April 1st 2021

我想在报告中跟踪/获取该用户的花费时间报告Google Analyticswith user101@example.comhasuser_id(1000)花费7minson April 1st 2021。如果可能的话,有没有办法通过 GA 跟踪相同的react-ga,如果可能的话,我们该怎么做?

截至目前,react-ga我正在跟踪如下userid属性:

ReactGA.set({userId});

如果无法通过 Google Analytics 实现,是否有任何服务提供商具有这种功能?

注意:我已经完成了现有的 q/a 但无法找到/找出解决方案。

4

1 回答 1

0

我可以使用另一个跟踪器Riveted,它的定义是:

Riveted 通过测量用户积极参与的时间量(例如,点击、滚动、使用键盘),然后定期将数据报告给 Google Analytics 来帮助解决这个问题。

更多关于它的页面

虽然Riveted是使用直接全局变量编写的,但我们需要使用exports-loader使其可用于 react 项目。

这是我可以实现的目标:

  • 在本地获取 riveded.js 作为文件

  • 确保通过安装 exports-loadernpm install exports-loader --save

  • 导入与 as 的位置相同revited.js

    import riveted from 'exports-loader?exports=riveted!./riveted.js';

  • 初始化后ReactGA.initialize(configs);

  • 如果您检查rived 的源代码,您会注意到它使用的是相同的ga对象,window.ga因此一旦通过初始化谷歌分析就ReactGA.initialize足够了。

  • react-ga提供了扩展的能力ga。它们的状态ga可以通过ReactGA.ga() 方法访问。This gives developers the flexibility of directly using ga.js features that have not yet been implemented in ReactGA. No validations will be done by ReactGA as it is being bypassed if this approach is used.

  • 然后ga允许编写自定义插件

所以这就是代码的样子:

import React, { PureComponent } from 'react';
import ReactGA from '../../src';
import riveted from 'exports-loader?exports=riveted!./riveted.js';

 export default class App extends PureComponent {
   constructor(props, context) {
     super(props, context);

     this.state = {
       reactGaInitialised: false,
       configs: [DEFAULT_CONFIG]
     };
   }


   initReactGA = (event) => {
     const { configs } = this.state;
     ReactGA.initialize(configs);
     // Send initial test view
     ReactGA.pageview('test-init-pageview');

     function TrackerCustomPlugin() {
         this.riveted = riveted;
     }
     TrackerCustomPlugin.prototype.init = riveted.init;

     let ga = ReactGA.ga();
     ga('provide', 'riveted', TrackerCustomPlugin);
     ga('require', 'riveted');
     ReactGA.plugin.execute('riveted', 'init', {
         reportInterval: 10,   // Default: 5
         idleTimeout: 20,      // Default: 30
         nonInteraction: true  // Default: true
     });
  };

以下是事件如何从我的本地发送到 GA:

在此处输入图像描述

GA仪表板显示Time Spent

在此处输入图像描述

于 2021-04-17T14:41:55.877 回答