【问题标题】:UI Router State Change Tracking in Google AnalyticsGoogle Analytics 中的 UI 路由器状态更改跟踪
【发布时间】:2015-08-31 18:05:39
【问题描述】:

我有一个使用 UI 路由器的 AngularJS 应用程序。尽管位置路径几乎总是保持为根('/'),但状态变化频繁。我想跟踪 Google Analytics 中的状态变化,使用您可以在页面视图中使用的所有功能。标准方法是在发生状态更改时发送浏览量事件,如下所示:

ui-router getting current path on state change for google analytics

问题在于,对于大多数交互,我的应用程序的 $location.path() 将是“/”。 URL 很少更改。我是 Google Analytics(分析)的非开发人员方面的新手,我担心这会导致报告不如其他情况下那么可靠。

据我所知,我的选择是:

  • 发送州名来代替 $location.path(),或许可以转换 '.'分隔符变成'/'。 $window.ga('send', 'pageview', { page: '/' + toState.name.replace(/\./g, '/') });

  • 发送一个大部分多余的 $location.path()(几乎总是'/'),并将状态名称放入其他属性中。 $window.ga('send', 'pageview', { page: $location.path(), someOtherAttribute: toState.name });

在这种情况下有经验的人可以建议我前进的正确方法吗?

编辑

从接受的答案中获得建议,我最终创建了一个具有以下两个功能(以及其他功能)的服务

var convertPageName = function(path,stateName){
    var ret = path;

    if(stateName) {
        ret = ret + ':' + stateName.replace(/\./g, '/');
    }

    return ret;

  };

  var callPageView = function(stateName) {
    var payload;

    if(undefined !== stateName) {
        payload = {page:convertPageName($location.path(),stateName), title: stateName};
    }
    else {
        payload = {page: $location.path};
    }

    $window.ga('set', payload);
    $window.ga('send', 'pageview');
  };

【问题讨论】:

  • 我认为您的第一个选项没有问题。确实没有合适的方法。确保这是一个全局替换。 toState.name.replace(/\./g, '/')
  • 谢谢。相应地进行了编辑。
  • 选项 1 的缺点是任何 url 参数都会丢失,因为它们不在状态名称中表示。例如:URL /products/123 可能会激活路由 products.description,但我们看不到正在访问的产品。所以,我倾向于选项 2,使用自定义尺寸。

标签: angularjs google-analytics angular-ui-router


【解决方案1】:

过去我所做的是将状态或路由更改等更改视为“页面”视图。其背后的原因是我们可以更有效地跟踪和玩谷歌分析世界。这是因为 GA 最初是围绕基于页面的组件构建的。您想要做的实际上是使用ga.set 绑定,然后推送您的页面视图或正在发送的任何事件。通过这样做,您现在可以在 GA 中保留所有关联的内容。这使您的代码如下:

$rootScope.$on("$stateChangeSuccess", function(event, toState, toParams, fromState, fromParams) {
    $window.ga('set',{page:$location.path() + toState.name.replace(/\./g, '/'), title:toState.name});
    $window.ga('send', 'pageview');
    //any other events to send. They're now all going to be associated 
    //with this state until there is another navigation
});

【讨论】:

  • 啊。因此,您实际上是在使用位置路径和状态名称的组合。这很有趣。
  • 是的。原因是在与 GA 合作时,您需要专注于如何管理您的报告。通过进行标题/页面映射,您可以在您的应用程序中与您网站的其余部分进行实际组合。
猜你喜欢
  • 2020-07-24
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2016-12-08
  • 1970-01-01
相关资源
最近更新 更多