Estou configurando um novo aplicativo usando o AngularJS como front-end. Tudo no lado do cliente é feito com o pushstate HTML5 e eu gostaria de poder acompanhar minhas visualizações de página no Google Analytics.
221
Estou configurando um novo aplicativo usando o AngularJS como front-end. Tudo no lado do cliente é feito com o pushstate HTML5 e eu gostaria de poder acompanhar minhas visualizações de página no Google Analytics.
Respostas:
Se você estiver usando
ng-view
seu aplicativo Angular, poderá ouvir o$viewContentLoaded
evento e enviar um evento de rastreamento ao Google Analytics.Supondo que você configurou seu código de acompanhamento no arquivo index.html principal com um nome
var _gaq
e MyCtrl é o que você definiu nang-controller
diretiva.UPDATE: para nova versão do Google Analytics, use este
fonte
_trackPageview
e não_trackPageView
... passou 10 minutos de coçar a cabeça :)$rootScope.$on('$routeChangeSuccess', ...)
$rootScope
garantiria que ela não seria removida por outro evento ou alteração de DOM, e o usorouteChangeSuccess
será acionado toda vez que o a barra de localização é alterada. Em vez de sempre, você altera o modelo de origem da visualização. Isso faz sentido?$window.ga('send', 'pageview', { page: $location.path() });
vez da$window._gaq...
parte. Além disso, convém removerga('send', 'pageview');
do seu código GA original para evitar duplicatas quando você chegar à página pela primeira vez.Quando uma nova visualização é carregada
AngularJS
, o Google Analytics não conta como um novo carregamento de página. Felizmente, existe uma maneira de informar manualmente o GA para registrar um URL como uma nova visualização de página._gaq.push(['_trackPageview', '<url>']);
faria o trabalho, mas como vincular isso ao AngularJS?Aqui está um serviço que você pode usar:
Ao definir seu módulo angular, inclua o módulo de análise da seguinte forma:
ATUALIZAÇÃO :
Você deve usar o novo código de rastreamento universal do Google Analytics com:
fonte
this.track = function($window.ga('send', 'pageview', {page: $location.url()});
Isso permitirá que você usegoogleAnalytics.track();
dentro de seu app.run () funçãofonte
app.run(["$rootScope", "$location", function(...
Apenas uma adição rápida. Se você estiver usando o novo analytics.js, então:
Além disso, uma dica é que o Google Analytics não será acionado no host local. Portanto, se você estiver testando no host local, use o seguinte em vez da criação padrão ( documentação completa )
fonte
$window
para acessar a janela (ga
é provável que apenas dentro do Angular estejaundefined
). Além disso, convém removerga('send', 'pageview');
do seu código GA original para evitar duplicatas quando você chegar à página pela primeira vez.$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) { ga('send', 'pageview', { 'page': $location.path(), 'title': toState.name }); });
$location.url()
Eu criei um serviço + filtro que poderia ajudar vocês com isso, e talvez também com alguns outros provedores, se você optar por adicioná-los no futuro.
Confira https://github.com/mgonto/angularytics e deixe-me saber como isso funciona para você.
fonte
Mesclar as respostas de wynnwu e dpineda foi o que funcionou para mim.
Definir o terceiro parâmetro como um objeto (em vez de apenas $ location.path ()) e usar $ routeChangeSuccess em vez de $ stateChangeSuccess fez o truque.
Espero que isto ajude.
fonte
Eu criei um exemplo simples no github usando a abordagem acima.
https://github.com/isamuelson/angularjs-googleanalytics
fonte
/account/:accountId
caminho aka éhttp://somesite.com/account/123
agora reportará o caminho como/account?accountId=123
A melhor maneira de fazer isso é usar o Gerenciador de tags do Google para disparar suas tags do Google Analytics com base nos ouvintes do histórico. Elas são incorporadas à interface do GTM e permitem facilmente o rastreamento nas interações HTML5 do lado do cliente.
Ative as variáveis internas do Histórico e crie um gatilho para disparar um evento com base nas alterações do histórico.
fonte
No seu
index.html
, copie e cole o snippet ga, mas remova a linhaga('send', 'pageview');
Eu gosto de dar o seu próprio arquivo de fábrica
my-google-analytics.js
com auto-injeção:fonte
page
caminho atual e o envia como apageview
? Qual é a diferença de fazer dessa maneira, em vez de apenas$window.ga('send', 'pageview', {page: $location.url()});
?Eu encontrei a
gtag()
função funcionada, em vez daga()
função.No arquivo index.html, dentro da
<head>
seção:No código AngularJS:
Substitua
TrackingId
por seu próprio ID de acompanhamento.fonte
Se alguém quiser implementar usando diretivas, identifique (ou crie) uma div no index.html (logo abaixo da tag body ou no mesmo nível DOM)
e adicione o seguinte código na diretiva
fonte
Se você estiver usando o ui-router, poderá se inscrever no evento $ stateChangeSuccess assim:
Para um exemplo completo de trabalho, consulte esta postagem no blog
fonte
Use o GA 'set' para garantir que as rotas sejam selecionadas para a análise em tempo real do Google. Caso contrário, as chamadas subsequentes para o GA não serão exibidas no painel em tempo real.
O Google recomenda fortemente essa abordagem geralmente, em vez de passar um terceiro parâmetro em 'enviar'. https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
fonte
Para aqueles que usam o AngularUI Router em vez do ngRoute, pode usar o código a seguir para rastrear as visualizações de página.
fonte
Os desenvolvedores que criam aplicativos de página única podem usar o autotrack , que inclui um plug- in urlChangeTracker que lida com todas as considerações importantes listadas neste guia para você. Consulte a documentação do rastreamento automático para obter instruções de uso e instalação.
fonte
Estou usando o AngluarJS no modo html5. Encontrei a seguinte solução como a mais confiável:
Use a biblioteca angular-google-analytics . Inicialize-o com algo como:
Depois disso, adicione ouvinte em $ stateChangeSuccess 'e envie o evento trackPage.
A qualquer momento, quando seu usuário for inicializado, você poderá injetar o Analytics no local e fazer uma ligação:
fonte
Estou usando o ui-router e meu código fica assim:
Dessa forma, eu posso rastrear estados diferentes. Talvez alguém ache útil.
fonte
Pessoalmente, gosto de configurar minhas análises com o URL do modelo em vez do caminho atual. Isso ocorre principalmente porque meu aplicativo possui muitos caminhos personalizados, como
message/:id
ouprofile/:id
. Se eu enviasse esses caminhos, teria tantas páginas visualizadas no analytics, seria muito difícil verificar quais usuários da página estão visitando mais.Agora, recebo visualizações de página limpas em minhas análises, como
user-profile.html
e emmessage.html
vez de muitas páginasprofile/1
,profile/2
eprofile/3
. Agora posso processar relatórios para ver quantas pessoas estão visualizando perfis de usuário.Se alguém tiver alguma objeção a respeito de por que essa é uma prática ruim dentro do analytics, eu ficaria mais do que feliz em ouvir sobre isso. Muito novo no uso do Google Analytics, por isso não tenho certeza se essa é a melhor abordagem ou não.
fonte
Sugiro usar a biblioteca de análise de segmentos e seguir nosso guia de início rápido angular . Você poderá rastrear visitas à página e ações de comportamento do usuário com uma única API. Se você tiver um SPA, poderá permitir que o
RouterOutlet
componente manipule quando a página for renderizada e usengOnInit
para chamarpage
chamadas. O exemplo abaixo mostra uma maneira de fazer isso:Eu sou o mantenedor de https://github.com/segmentio/analytics-angular . Com o segmento, você pode ativar e desativar diferentes destinos ao pressionar um botão, se estiver interessado em experimentar várias ferramentas de análise (suportamos mais de 250 destinos) sem precisar escrever nenhum código adicional. 🙂
fonte
Mesclando ainda mais a resposta de Pedro Lopez,
Adicionei isso ao meu módulo ngGoogleAnalytis (que reutilizo em muitos aplicativos):
nesse caso, tenho uma tag no meu link de índice:
é útil ao usar o modo html5 no angular.js v1.3
(remova a chamada da função replace () se sua tag base não terminar com uma barra /)
fonte
Se você está procurando o controle total do novo código de rastreamento do Google Analytics, pode usar meu próprio Angular-GA .
Ele é
ga
disponibilizado por injeção, facilitando o teste. Ele não faz nenhuma mágica, além de definir o caminho em cada routeChange. Você ainda precisa enviar a visualização de página como aqui.Além disso, há uma diretiva
ga
que permite vincular várias funções de análise a eventos, como este:fonte