Estoy configurando una nueva aplicación usando AngularJS como interfaz de usuario. Todo en el lado del cliente se realiza con HTML5 pushstate y me gustaría poder rastrear las visitas de mi página en Google Analytics.
221
Estoy configurando una nueva aplicación usando AngularJS como interfaz de usuario. Todo en el lado del cliente se realiza con HTML5 pushstate y me gustaría poder rastrear las visitas de mi página en Google Analytics.
Respuestas:
Si está utilizando
ng-view
su aplicación Angular, puede escuchar el$viewContentLoaded
evento y enviar un evento de seguimiento a Google Analytics.Suponiendo que haya configurado su código de seguimiento en su archivo index.html principal con un nombre
var _gaq
y MyCtrl es lo que ha definido en lang-controller
directiva.ACTUALIZACIÓN: para la nueva versión de google-analytics use esta
fuente
_trackPageview
y no_trackPageView
... pasó 10 minutos rascándose la cabeza :)$rootScope.$on('$routeChangeSuccess', ...)
$rootScope
garantizaría que no se eliminará por algún otro evento o cambio de DOM, y el usorouteChangeSuccess
se disparará cada vez que la barra de ubicación cambia, en vez de cambiar la plantilla de origen de la vista. ¿Tiene sentido?$window.ga('send', 'pageview', { page: $location.path() });
lugar de la$window._gaq...
parte. Además, es posible que desee eliminarga('send', 'pageview');
su código GA original para evitar duplicados cuando aterrice por primera vez en una página.Cuando se carga una nueva vista
AngularJS
, Google Analytics no la cuenta como una nueva carga de página. Afortunadamente, hay una manera de decirle manualmente a GA que registre una URL como una nueva página vista._gaq.push(['_trackPageview', '<url>']);
haría el trabajo, pero ¿cómo vincular eso con AngularJS?Aquí hay un servicio que podría usar:
Cuando defina su módulo angular, incluya el módulo de análisis de la siguiente manera:
ACTUALIZACIÓN :
Debe usar el nuevo código de seguimiento de Universal Google Analytics con:
fuente
this.track = function($window.ga('send', 'pageview', {page: $location.url()});
Esto le permitirá utilizargoogleAnalytics.track();
dentro de su app.run () la funciónfuente
app.run(["$rootScope", "$location", function(...
Solo una adición rápida. Si está utilizando el nuevo analytics.js, entonces:
Además, un consejo es que google analytics no se activará en localhost. Entonces, si está probando en localhost, use lo siguiente en lugar de la creación predeterminada ( documentación completa )
fuente
$window
para acceder a la ventana (ga
es muy probable que solo dentro de Angular lo seaundefined
). Además, es posible que desee eliminarga('send', 'pageview');
su código GA original para evitar duplicados cuando aterrice por primera vez en una página.$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) { ga('send', 'pageview', { 'page': $location.path(), 'title': toState.name }); });
$location.url()
Creé un servicio + filtro que podría ayudarlos con esto, y tal vez también con algunos otros proveedores si eligen agregarlos en el futuro.
Visite https://github.com/mgonto/angularytics y dígame cómo funciona esto para usted.
fuente
Combinar las respuestas de wynnwu y dpineda fue lo que funcionó para mí.
Establecer el tercer parámetro como un objeto (en lugar de solo $ location.path ()) y usar $ routeChangeSuccess en lugar de $ stateChangeSuccess hizo el truco.
Espero que esto ayude.
fuente
He creado un ejemplo simple en github usando el enfoque anterior.
https://github.com/isamuelson/angularjs-googleanalytics
fuente
/account/:accountId
akahttp://somesite.com/account/123
, ahora informará la ruta como/account?accountId=123
La mejor manera de hacerlo es usar el Administrador de etiquetas de Google para activar sus etiquetas de Google Analytics en función de los oyentes del historial. Estos están integrados en la interfaz GTM y permiten fácilmente el seguimiento de las interacciones HTML5 del lado del cliente.
Habilite las variables de historial incorporadas y cree un desencadenador para activar un evento en función de los cambios del historial.
fuente
En su
index.html
, copie y pegue el fragmento ga pero elimine la líneaga('send', 'pageview');
Me gusta darle su propio archivo de fábrica
my-google-analytics.js
con autoinyección:fuente
page
ruta actual y luego la envía comopageview
? ¿Cuál es la diferencia de hacerlo así en lugar de solo$window.ga('send', 'pageview', {page: $location.url()});
?Encontré que la
gtag()
función funcionaba, en lugar de laga()
función.En el archivo index.html, dentro de la
<head>
sección:En el código AngularJS:
Reemplace
TrackingId
con su propia identificación de seguimiento.fuente
Si alguien quiere implementar usando directivas, identifique (o cree) un div en index.html (justo debajo de la etiqueta del cuerpo, o en el mismo nivel de DOM)
y luego agregue el siguiente código en la directiva
fuente
Si está utilizando ui-router, puede suscribirse al evento $ stateChangeSuccess de esta manera:
Para un ejemplo de trabajo completo, vea esta publicación de blog
fuente
Use GA 'set' para asegurarse de que se seleccionen las rutas para el análisis en tiempo real de Google. De lo contrario, las llamadas posteriores a GA no se mostrarán en el panel en tiempo real.
Google recomienda encarecidamente este enfoque en general en lugar de pasar un tercer parámetro en 'enviar'. https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
fuente
Para aquellos de ustedes que usan AngularUI Router en lugar de ngRoute, pueden usar el siguiente código para rastrear las visitas a la página.
fuente
Los desarrolladores que crean aplicaciones de una sola página pueden usar el seguimiento automático , que incluye un complemento urlChangeTracker que maneja todas las consideraciones importantes enumeradas en esta guía para usted. Consulte la documentación del seguimiento automático para obtener instrucciones de uso e instalación.
fuente
Estoy usando AngluarJS en modo html5. Encontré la siguiente solución como la más confiable:
Utilice la biblioteca angular-google-analytics . Inicialízalo con algo como:
Después de eso, agregue escucha en $ stateChangeSuccess 'y envíe el evento trackPage.
En cualquier momento, cuando haya inicializado a su usuario, puede inyectar Analytics allí y hacer una llamada:
fuente
Estoy usando ui-router y mi código se ve así:
De esta manera puedo rastrear diferentes estados. Quizás alguien lo encuentre útil.
fuente
Personalmente, me gusta configurar mis análisis con la URL de la plantilla en lugar de la ruta actual. Esto se debe principalmente a que mi aplicación tiene muchas rutas personalizadas como
message/:id
oprofile/:id
. Si tuviera que enviar estas rutas, vería tantas páginas dentro de análisis que sería demasiado difícil verificar qué página visitan más los usuarios.Ahora obtengo vistas de página limpias dentro de mi análisis, como
user-profile.html
y enmessage.html
lugar de muchas páginasprofile/1
,profile/2
yprofile/3
. Ahora puedo procesar informes para ver cuántas personas están viendo los perfiles de usuario.Si alguien tiene alguna objeción de por qué esta es una mala práctica dentro de la analítica, me encantaría saberlo. Muy nuevo en el uso de Google Analytics, así que no estoy muy seguro de si este es el mejor enfoque o no.
fuente
Sugiero usar la biblioteca de análisis de segmentos y seguir nuestra guía de inicio rápido angular . Podrá realizar un seguimiento de las visitas a la página y las acciones de comportamiento del usuario con una única API. Si tiene un SPA, puede permitir que el
RouterOutlet
componente maneje cuando la página se procesa y usarngOnInit
para invocarpage
llamadas. El siguiente ejemplo muestra una forma de hacer esto:Soy el encargado de mantener https://github.com/segmentio/analytics-angular . Con Segment, podrá activar y desactivar diferentes destinos con solo presionar un interruptor si está interesado en probar varias herramientas de análisis (admitimos más de 250 destinos) sin tener que escribir ningún código adicional. 🙂
fuente
Fusionándose aún más con la respuesta de Pedro López,
Agregué esto a mi módulo ngGoogleAnalytis (que reutilizo en muchas aplicaciones):
en este caso, tengo una etiqueta en mi enlace de índice:
es útil cuando se usa el modo html5 en angular.js v1.3
(elimine la llamada a la función replace () si su etiqueta base no termina con una barra inclinada /)
fuente
Si está buscando el control total del nuevo código de seguimiento de Google Analytics, puede usar mi propio Angular-GA .
Se pone a
ga
disposición mediante inyección, por lo que es fácil de probar. No hace ninguna magia, aparte de establecer el camino en cada ruta Cambiar. Todavía tiene que enviar la página vista como aquí.Además, hay una directiva
ga
que permite vincular múltiples funciones analíticas a eventos, como esta:fuente