2013-04-13 9 views
11

安定したEmber RCがあるので、後ほど参考にしたいと思います。Ember.jsと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') 

が、その後、私はまた、単一のページのWebアプリケーションのためEvent Trackingを使用しての結果を参照してください。emberjs google analyticsのトップ2 search resultsの組み合わせは、これはトラックのルート変更を行うための良い方法であることが明らかになりました。

私は上記のコードをまだテストしていませんが、GAダッシュボードに変更を反映するまでに数時間かかります。 更新:Googleアナリティクスダッシュボードのコンテンツカテゴリには表示されません。 「ページ」または「イベント」の下にはありません。

誰かがアドバイスを持っている場合、または私がどこかで紛失しているものがある場合は、私に知らせてください。私はここの答えに基づいてウェブサイトのためのガイドをPRすることもできます。

+0

私はRC1にあり、ApplicationControllerのコンテキストでroute.urlのプロパティを読み取ることができません。あなたが実際にURLを渡す必要があるかどうか確かではありません - GAは、ページを渡さない場合でも呼び出し元をログに記録する必要がありますが、現在のURLを取得する方法もあります(@get( 'currentPath')だけでなく) – mdrozdziel

+0

私は、私はこの方法を数日から使用していますが、それはうまくいきます。それは:idも追跡しています。 – Rudi

+0

acidburn2k: '@get( 'router.url')'は 'Em.run.next'関数の中では動作しません。質問が更新されました。 – mehulkar

答えて

1

ルーティング可能なURLを持つものと_trackEventを持たないものについて_trackPageviewを使用します。

Event Trackingのリンクでは、「埋め込みAJAXページ要素」を参照しています。それらはSPAを意味するのではなく、URLが同じままである場合でも、ページ内で(AJAX経由の場合)追跡するイベントが発生します。

_trackEventを使用することが理にかなっている場合もありますが、_trackPageviewを使用してルートを移行する場合もあります。

+0

上記の実装は正しいですか?それは私のために何かを追跡しているようには見えないからです。計算されたプロパティが発生しています。 – mehulkar

+0

いいえ、最初のパラメータは_trackPageviewである必要があります。すみませんでした。 – sapientpants

+0

はこれが今働いていることを確認しました! – mehulkar

1

routeChanged()を使用すると、/ category/food/category/somethingなどの動的セグメントをトラッキングするのに適していません。これは、1回だけ起動されるためです。私はここにこれに関する記事を書いた:http://www.randomshouting.com/2013/05/04/Ember-and-Google-Analytics.html。私はEmberの後輩と相談し、これが実際にGoogle AnalyticsのURL変更を追跡する適切な方法であることを確認しました。

+0

[更新されたルーター](https://gist.github.com/machty/5723945)でこれを行うより良い方法と別の方法がありますか? – mehulkar

+0

これはEmber RC3に基づいていましたが、現在はもっと良い方法があるかどうかはわかりません。 ルーターの "url"プロパティを観察することができたRC3でも、URLが変更されるたびに通知が2回発行されていました。その問題が修正された場合は、その方法を使用することができます。 どちらの方法もルータをベースにしているため、大きな違いはありません。 –

2

Alex DiLibertoは、EmberConf 2014のトークhereで、EmberアプリにGoogleアナリティクスを追加するための堅牢な&スケーラブルな方法について本当に素敵な話をしました。 Slides - - GitHub

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

話は分析ライブラリが使用されたとは独立であることを目指していました。

Googleアナリティクスhereの実装に関する公式のEmber Cookbookもあります。

0

これらの回答のほとんどは古くなっています。ミックスインを使用してルータに追加して、didTransitionイベントをリスンしてページビューを発生させる必要があります。そうすれば、すべてのルートで処理されます。そこには、ember trackerというpageviewsとイベントの追跡を提供するものを含めて、そこにいくつかのアドオンがあります。

私はそれをどのようにして見ることができますhere。それはかなり簡単です。

+0

'onTransition'ではなく' willTransition'または 'didTransition'を意味しますか? – kumkanillam

+0

ああ、キャッチしてくれてありがとう! – transformerTroy