2013-04-13 24 views
11

Ich wollte eine definitive Antwort hier für spätere Referenz bekommen, jetzt, dass wir eine stabile Ember RC haben. Eine Kombination aus dem Besten 2 search results für emberjs google analytics zeigt, dass dies ein guter Weg ist, zu tun Änderungen Track Route: für die Verwendung von Event Tracking für einzelne Seite WebanwendungenEmber.js und 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') 

aber dann auch Ergebnisse, die ich sehen.

Ich habe den Code oben noch nicht getestet, es dauert ein paar Stunden, um Änderungen an das GA-Dashboard zu propagieren. Aktualisieren: Dies wird nicht in der Kategorie Inhalt in meinem Google Analytics-Dashboard angezeigt. Weder unter "Seiten" noch "Ereignisse".

Wenn jemand einen Rat hat oder wenn ich irgendwo etwas vermisse, lass es mich wissen. Ich kann auch einen Leitfaden für die Website basierend auf den Antworten hier.

+0

Ich bin auf RC1 und ich kann die Eigenschaft von route.url im Zusammenhang mit ApplicationController nicht lesen. Nicht sicher, ob Sie wirklich die URL übergeben müssen - GA sollte den Aufrufer protokollieren, wenn Sie die Seite nicht übergeben, aber immer noch - wie Sie die aktuelle URL erhalten (nicht nur die Pfadkomponente @get ('currentPath') – mdrozdziel

+0

I ' Ich benutze diese Methode seit ein paar Tagen und es funktioniert gut.Es verfolgt die: ID auch, ich bin mir noch nicht sicher, ob das was ich will. – Rudi

+0

acidburn2k: Sie haben Recht, dass '@get ('router.url')' nicht in der 'Em.run.next' Funktion funktioniert. Aktualisierte Frage mit etwas, das funktioniert. – mehulkar

Antwort

1

Ich würde _trackPageview für Dinge verwenden, die routbare URLs und _trackEvent für Dinge haben, die nicht tun.

In der Event Tracking Verknüpfung, wenn sie sich auf "eingebettete AJAX-Seitenelemente" beziehen. Sie sind nicht SPA's gemeint, sondern die Fälle, in denen die URL gleich bleibt, aber ein Ereignis, das Sie verfolgen möchten, geschieht innerhalb der Seite (im Fall über AJAX).

Es kann andere Fälle geben, in denen es sinnvoll ist, _trackEvent zu verwenden, aber für Routenübergänge würde ich _trackPageview verwenden.

+0

also ist die obige Implementierung korrekt? Weil es nichts für mich zu verfolgen scheint. Die berechnete Eigenschaft wird ausgelöst. – mehulkar

+0

Nein, der erste Parameter muss _trackPageview sein. Tut mir leid, ich habe das früher nicht verstanden. – sapientpants

+0

bestätigt, dass dies jetzt funktioniert! – mehulkar

1

Die Verwendung von routeChanged() ist keine gute Möglichkeit, dynamische Segmente wie/category/food/category/something zu verfolgen, da sie nur einmal ausgelöst werden. Ich habe einen Artikel darüber geschrieben: http://www.randomshouting.com/2013/05/04/Ember-and-Google-Analytics.html. Ich habe mich auch mit den Leuten hinter Ember beraten und bestätigt, dass dies die richtige Methode ist, URL-Änderungen für Google Analytics nachzuverfolgen.

+0

Gibt es einen besseren/anderen Weg, dies jetzt mit dem [aktualisierten Router] (https://gist.github.com/macherty/5723945) zu tun? – mehulkar

+0

Dies basiert auf Ember RC3, ich bin mir nicht sicher, ob es einen besseren Weg gibt, es jetzt zu tun. Es gab eine Alternative sogar in RC3, wo Sie die "url" -Eigenschaft des Routers beobachten konnten, aber die Benachrichtigung wurde jedes Mal zweimal ausgelöst, wenn sich die URL änderte. Wenn dieses Problem jetzt behoben ist, könnten Sie diesen Ansatz verwenden. Beide Ansätze basieren auf dem Router, so dass es nicht viel Unterschied gibt. –

2

Alex DiLiberto hat in seinem EmberConf 2014 Talk here eine sehr gute Rede über eine skalierbare Methode &, Google Analytics zu einer Ember App hinzuzufügen. - Slides - GitHub

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

Der Vortrag unabhängig davon zu sein, wurde mit dem Ziel analytics Bibliothek verwendet wurde.

Es gibt jetzt auch ein offizielles Ember Cookbook zur Implementierung von Google Analytics here.

0

Die meisten dieser Antworten sind veraltet. Sie sollten ein Mixin verwenden und es zu Ihrem Router hinzufügen, um auf das Ereignis didTransition zu warten und Ihren Seitenaufruf dort zu feuern. So wird es für alle Routen gehandhabt. Es gibt einige Addons da draußen, einschließlich eines, das ich geschrieben habe, ember tracker genannt, das Ihnen pageviews und Ereignisverfolgung out-of-the-Box gibt.

Sie können sehen, wie ich es tat here. Es ist ziemlich geradlinig.

+0

Meinst du zu 'willTransition' oder' didTransition' anstelle von 'onTransition'? – kumkanillam

+0

Ahhh, danke für den Haken! – transformerTroy