J'installe une nouvelle application utilisant AngularJS comme interface. Tout côté client se fait avec pushstate HTML5 et j'aimerais pouvoir suivre mes pages vues dans Google Analytics.
221
J'installe une nouvelle application utilisant AngularJS comme interface. Tout côté client se fait avec pushstate HTML5 et j'aimerais pouvoir suivre mes pages vues dans Google Analytics.
Réponses:
Si vous utilisez
ng-view
dans votre application Angular, vous pouvez écouter l'$viewContentLoaded
événement et envoyer un événement de suivi à Google Analytics.En supposant que vous avez configuré votre code de suivi dans votre fichier index.html principal avec un nom
var _gaq
et MyCtrl est ce que vous avez défini dans lang-controller
directive.MISE À JOUR: pour une nouvelle version de google-analytics, utilisez celle-ci
la source
_trackPageview
et non_trackPageView
... passé 10 minutes à se gratter la tête :)$rootScope.$on('$routeChangeSuccess', ...)
$rootScope
garantirait qu'il ne sera pas supprimé par un autre événement ou changement de DOM, et l'utilisationrouteChangeSuccess
se déclenchera à chaque fois que le la barre d'emplacement change, au lieu de changer de modèle de source de vue. Cela a-t-il du sens?$window.ga('send', 'pageview', { page: $location.path() });
place de la$window._gaq...
partie. En outre, vous souhaiterez peut-être supprimerga('send', 'pageview');
de votre code GA d'origine pour éviter les doublons lorsque vous atterrissez pour la première fois sur une page.Lorsqu'une nouvelle vue est chargée
AngularJS
, Google Analytics ne la considère pas comme un nouveau chargement de page. Heureusement, il existe un moyen de dire manuellement à GA d'enregistrer une URL en tant que nouvelle page vue._gaq.push(['_trackPageview', '<url>']);
ferait le travail, mais comment lier cela avec AngularJS?Voici un service que vous pourriez utiliser:
Lorsque vous définissez votre module angulaire, incluez le module d'analyse comme suit:
MISE À JOUR :
Vous devez utiliser le nouveau code de suivi universel Google Analytics avec:
la source
this.track = function($window.ga('send', 'pageview', {page: $location.url()});
Cela vous permettra d'utiliser augoogleAnalytics.track();
sein de votre app.run () fonctionla source
app.run(["$rootScope", "$location", function(...
Juste un ajout rapide. Si vous utilisez le nouveau analytics.js, alors:
De plus, une astuce est que google analytics ne se déclenchera pas sur localhost. Donc, si vous testez sur localhost, utilisez ce qui suit au lieu de la création par défaut ( documentation complète )
la source
$window
pour accéder à la fenêtre (ga
seul à l'intérieur d'Angular est très susceptible de l'êtreundefined
). En outre, vous souhaiterez peut-être supprimerga('send', 'pageview');
de votre code GA d'origine pour éviter les doublons lorsque vous atterrissez pour la première fois sur une page.$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) { ga('send', 'pageview', { 'page': $location.path(), 'title': toState.name }); });
$location.url()
J'ai créé un service + filtre qui pourrait vous aider, et peut-être aussi avec d'autres fournisseurs si vous choisissez de les ajouter à l'avenir.
Consultez https://github.com/mgonto/angularytics et faites-moi savoir comment cela fonctionne pour vous.
la source
La fusion des réponses de wynnwu et dpineda a été ce qui a fonctionné pour moi.
Définir le troisième paramètre en tant qu'objet (au lieu de simplement $ location.path ()) et utiliser $ routeChangeSuccess au lieu de $ stateChangeSuccess a fait l'affaire.
J'espère que cela t'aides.
la source
J'ai créé un exemple simple sur github en utilisant l'approche ci-dessus.
https://github.com/isamuelson/angularjs-googleanalytics
la source
/account/:accountId
chemin aka,http://somesite.com/account/123
il signalera maintenant le chemin comme/account?accountId=123
La meilleure façon de procéder consiste à utiliser Google Tag Manager pour déclencher vos balises Google Analytics en fonction des écouteurs d'historique. Ceux-ci sont intégrés à l'interface GTM et permettent facilement le suivi des interactions HTML5 côté client.
Activez les variables d' historique intégrées et créez un déclencheur pour déclencher un événement en fonction des modifications de l'historique.
la source
Dans votre
index.html
, copiez et collez l'extrait ga mais supprimez la lignega('send', 'pageview');
J'aime lui donner son propre fichier d'usine
my-google-analytics.js
avec auto-injection:la source
page
le chemin actuel, puis soumettez-le en tant quepageview
? Quelle est la différence de le faire de cette façon au lieu de simplement$window.ga('send', 'pageview', {page: $location.url()});
?J'ai trouvé que la
gtag()
fonction fonctionnait, au lieu de laga()
fonction.Dans le fichier index.html, dans la
<head>
section:Dans le code AngularJS:
Remplacez-le
TrackingId
par votre propre identifiant de suivi.la source
Si quelqu'un veut implémenter à l'aide de directives, identifiez (ou créez) un div dans le index.html (juste sous la balise body, ou au même niveau DOM)
puis ajoutez le code suivant dans la directive
la source
Si vous utilisez ui-router, vous pouvez vous abonner à l'événement $ stateChangeSuccess comme ceci:
Pour un exemple de travail complet, voir cet article de blog
la source
Utilisez GA «set» pour vous assurer que les itinéraires sont récupérés pour les analyses Google en temps réel. Sinon, les appels ultérieurs à GA n'apparaîtront pas dans le panneau en temps réel.
Google conseille fortement cette approche au lieu de passer un 3ème paramètre dans "envoyer". https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
la source
Pour ceux d'entre vous qui utilisent AngularUI Router au lieu de ngRoute, vous pouvez utiliser le code suivant pour suivre les pages vues.
la source
Les développeurs qui créent des applications à page unique peuvent utiliser le suivi automatique , qui comprend un plugin urlChangeTracker qui gère pour vous toutes les considérations importantes répertoriées dans ce guide. Consultez la documentation autotrack pour les instructions d'utilisation et d'installation.
la source
J'utilise AngluarJS en mode html5. J'ai trouvé la solution suivante comme la plus fiable:
Utilisez la bibliothèque angular-google-analytics . Initialisez-le avec quelque chose comme:
Après cela, ajoutez l'écouteur sur $ stateChangeSuccess 'et envoyez l'événement trackPage.
À tout moment, lorsque votre utilisateur est initalisé, vous pouvez y injecter Analytics et appeler:
la source
J'utilise ui-router et mon code ressemble à ceci:
De cette façon, je peux suivre différents états. Peut-être que quelqu'un le trouvera utile.
la source
Personnellement, j'aime configurer mes analyses avec l'URL du modèle au lieu du chemin actuel. Ceci est principalement dû au fait que mon application possède de nombreux chemins personnalisés tels que
message/:id
ouprofile/:id
. Si je devais envoyer ces chemins, j'aurais tellement de pages visualisées dans Analytics, il serait trop difficile de vérifier quelle page les utilisateurs visitent le plus.J'obtiens désormais des pages propres dans mes analyses, telles que
user-profile.html
etmessage.html
au lieu de nombreuses pagesprofile/1
,profile/2
etprofile/3
. Je peux maintenant traiter des rapports pour voir combien de personnes consultent les profils utilisateur.Si quelqu'un s'oppose à la raison pour laquelle il s'agit d'une mauvaise pratique en matière d'analyse, je serais plus qu'heureux d'en entendre parler. Tout nouveau dans l'utilisation de Google Analytics, donc pas trop sûr si c'est la meilleure approche ou non.
la source
Je suggère d'utiliser la bibliothèque d'analyse de segment et de suivre notre guide de démarrage rapide angulaire . Vous pourrez suivre les visites de pages et suivre les actions du comportement des utilisateurs avec une seule API. Si vous avez un SPA, vous pouvez autoriser le
RouterOutlet
composant à gérer le rendu de la page et à l'utiliserngOnInit
pour appeler despage
appels. L'exemple ci-dessous montre une façon de procéder:Je suis le responsable de https://github.com/segmentio/analytics-angular . Avec Segment, vous pourrez activer et désactiver différentes destinations en appuyant sur un commutateur si vous souhaitez essayer plusieurs outils d'analyse (nous prenons en charge plus de 250+ destinations) sans avoir à écrire de code supplémentaire. 🙂
la source
Fusionner encore plus avec la réponse de Pedro Lopez,
J'ai ajouté ceci à mon module ngGoogleAnalytis (que je réutilise dans de nombreuses applications):
dans ce cas, j'ai une balise dans mon lien d'index:
il est utile lors de l'utilisation du mode html5 sur angular.js v1.3
(supprimez l'appel de la fonction replace () si votre balise de base ne se termine pas par une barre oblique /)
la source
Si vous recherchez le contrôle total du nouveau code de suivi de Google Analytics, vous pouvez utiliser mon propre Angular-GA .
Il est
ga
disponible par injection, il est donc facile à tester. Cela ne fait aucune magie, à part définir le chemin sur chaque routeChange. Vous devez toujours envoyer la page vue comme ici.De plus, il existe une directive
ga
qui permet de lier plusieurs fonctions d'analyse à des événements, comme ceci:la source