Estoy usando Angulartics y Angulartics Google Analytics [1] para rastrear el flujo de usuarios en una página angular. El seguimiento de eventos funciona bien. También el seguimiento de páginas vistas es automático y funciona. Sin embargo, en el panel de control de Google Analytics no puedo ver la parte de anclaje de la URL.
Las solicitudes de seguimiento se ven así:
https://www.google-analytics.com/collect? v=1&_v=j51&a=333486222&t=screenview&_s=7& cd=%2Findex.html%23%2Fsign-in& dl=http%3A%2F%2Flocalhost%2Findex.html& ul=de&de=UTF-8& dt=Treat& sd=24-bit&sr=1918x941& vp=1918x845&je=0& fl=25.0%20r0&an=Treats&_u=SACAAMABO~&jid=& gjid=&cid=1883662174.1492999789& uid=Mark-user&tid=UA-9675XXXX-1&z=124537179 Observe cómo el cd=%2Findex.html%23%2Fsign-in incluye la parte #sign-in del URI, pero la importante dl=http%3A%2F%2Flocalhost%2Findex.html no.
Mi app.js se ve así:
... }).config(function ($analyticsProvider) { $analyticsProvider.firstPageview(true); /*Records pages that don't use $state or $route*/ $analyticsProvider.withAutoBase(true); /*Records full path*/ $analyticsProvider.virtualPageviews(true); }); ;¿Cómo puedo rastrear el URI completo, incluido el ancla para las vistas de página con Angulartics sin recurrir al código de activación manual?
[1] https://github.com/angulartics/angulartics-google-analytics
[2] https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#ubicación
Lo solucioné deshabilitando las vistas de página integradas y el seguimiento en el controlador de eventos stateChangeSuccess de esta manera:
angular.module('starter', ['ionic', ... ,'angulartics', 'angulartics.google.analytics', 'angulartics.google.analytics.cordova','angulartics.mixpanel']) .run(function($rootScope, $state, $analytics, $location){ $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ // we do not use Angulartics virtual pageviews, instead we track them "manually" here because of // https://github.com/angulartics/angulartics/issues/550 // also we track pageviews as events with the pageview path as event name to use the low cost plan of https://mixpanel.com/pricing/ var currentPath = $location.path(); $analytics.pageTrack(currentPath); $analytics.eventTrack(currentPath, {category: 'pageview', label: 'pageview'}); }); }); El punto es llamar a $analytics.pageTrack con location.path . ¡Funciona bastante bien! También informé de un error en el sitio web del proyecto.