2013-04-13 36 views
11

Volevo ottenere una risposta definitiva qui per riferimento futuro ora che abbiamo un Ember RC stabile. Una combinazione della parte superiore 2 search results per emberjs google analytics rivela che questo è un buon modo per fare cambiamenti di rotta pista:Ember.js e Google Analytics

App.ApplicationController = Ember.Controller.extend 
    routeChanged: (-> 
    return unless window._gaq 
    Em.run.next -> 
     page = if window.location.hash.length > 0 then window.location.hash.substring(1) else window.location.pathname 
     _gaq.push(['_trackPage', page]) 
).observes('currentPath') 

ma poi ho anche vedere i risultati per l'utilizzo Event Tracking per applicazioni singola pagina web.

non ho sopra ancora testato il codice, richiede alcune ore per propagare le modifiche al cruscotto GA. Aggiornamento: questo non viene visualizzato nella categoria Contenuto nella mia bacheca di Google Analytics. Né sotto "Pagine" o "Eventi".

Se qualcuno ha dei consigli o se c'è qualcosa che mi manca da qualche parte fammi sapere. Posso anche PR una guida per il sito web in base alle risposte qui.

+0

Sono su RC1 e non riesco a leggere la proprietà di route.url nel contesto di ApplicationController. Non sei sicuro di aver davvero bisogno di passare l'url - GA dovrebbe registrare il chiamante se non passi la pagina, ma ancora - come ottenere l'url corrente (non solo il componente del percorso @get ('currentPath') – mdrozdziel

+0

I ' Sto usando questo metodo da alcuni giorni e funziona bene. Sta monitorando anche l'id: non ne sono ancora sicuro se è quello che voglio. – Rudi

+0

acidburn2k: hai ragione che '@get ('router.url')' non funziona nella funzione 'Em.run.next'. Domanda aggiornata con qualcosa che funziona. – mehulkar

risposta

1

vorrei usare _trackPageview per le cose che hanno URL routing e _trackEvent per le cose che non lo fanno.

Nel link Event Tracking quando si riferiscono a "embedded elementi della pagina AJAX". Non significano le SPA, ma piuttosto quei casi in cui l'URL rimane lo stesso, ma alcuni eventi che desideri monitorare avvengono all'interno della pagina (nel caso tramite AJAX).

Ci possono essere altri casi in cui ha senso usare _trackEvent, ma per le transizioni di percorso userei _trackPageview.

+0

quindi l'implementazione sopra è corretta? Perché sembra che non stia seguendo nulla per me. la proprietà calcolata sta sparando. – mehulkar

+0

No, il primo parametro deve essere _trackPageview. Scusa, non l'ho capito prima. – sapientpants

+0

ha confermato che questo funziona ora! – mehulkar

1

Utilizzando routeChanged() non è un buon modo per tenere traccia segmenti dinamici come/categoria/cibo/categoria/qualcosa dal momento che sta per essere licenziato solo una volta. Ho scritto un articolo su questo qui: http://www.randomshouting.com/2013/05/04/Ember-and-Google-Analytics.html. Ho anche consultato i ragazzi di Ember e ho confermato che questo è davvero il modo corretto per tenere traccia delle modifiche dell'URL per Google Analytics.

+0

C'è un modo migliore/diverso per farlo ora con il [router aggiornato] (https://gist.github.com/machty/5723945)? – mehulkar

+0

Questo era basato su Ember RC3, non sono sicuro che ci sia un modo migliore per farlo ora. C'era un'alternativa anche in RC3 in cui si poteva osservare la proprietà "url" del router ma la notifica veniva usata due volte ogni volta che veniva modificata l'url. Se il problema è risolto ora, puoi utilizzare tale approccio. Entrambi gli approcci sono basati sul router, quindi non c'è molta differenza. –

2

Alex DiLiberto ha parlato molto bene di un robusto modo scalabile per aggiungere Google Analytics a un'app emberConf nel suo talk EmberConf 2014 here. - Slides - GitHub

App.ApplicationRoute = Ember.Route.extend({ 
    actions: { 
    didTransition: function() { 
     Ember.run.once(this, function() { 
     ga('send', 'pageview', this.router.get('url')); 
     }); 
    } 
    } 
}); 

Il discorso è stato l'obiettivo di essere indipendente, di cui di Analytics libreria è stata utilizzata.

C'è ora anche un libro di cucina ufficiale Ember sull'implementazione di Google Analytics here.

0

Molte di queste risposte sono obsolete. Dovresti utilizzare un mixin e aggiungerlo al tuo router per ascoltare l'evento didTransition e attivare la tua visualizzazione di pagina. In questo modo viene gestito per tutte le rotte. Ci sono diversi addon là fuori, tra cui uno che ho scritto chiamato ember tracker che ti dà pageviews e tracciamento eventi pronti all'uso.

È possibile vedere come l'ho fatto here. È abbastanza semplice.

+0

Intendi per 'willTransition' o' didTransition' invece di 'onTransition' – kumkanillam

+0

Ahhh, grazie per la cattura! – transformerTroy