2010-11-28 5 views
7

Ich habe viel über dieses Problem gesucht, kann aber nichts Gutes finden. Ich denke, dass dies ein häufiges Problem ist: Sie haben eine Web-App und bauen JSON-APIs auf Ihrer Plattform auf, sodass Sie einige Widgets, mobile Apps oder Anwendungen von Drittanbietern entwickeln können.JSON-Aufrufe mit Google Analytics in einer Ruby/Rails-App verfolgen

Ich weiß, dass es eine Menge spezifischer Analysedienste über API gibt (wie Mixpanel, Kissmetrics und viele andere), aber ich möchte alle JSON-Aufrufe auch über Google Analytics verfolgen.

Ich fand, dass die beste Methode ist, das __utm.gif Bild zu verwenden, aber seltsamerweise kann ich kein Plugin oder Juwel finden, um dieses Bild zu verwenden. Also habe ich versucht, meine eigene Methode ohne Erfolg zu bauen (siehe Code unten) ... Jemand kann helfen?

def google_analytics_call(page_title) 
     today = Time.now.to_i 
     utma = cookies[:__utma].to_s 
     utmb = cookies[:__utmb].to_s 
     utmc = cookies[:__utmc].to_s 
     utmz = cookies[:__utmz].to_s 
     utma = (rand(8).to_s + "." + rand(10).to_s + "." + today.to_s + "." + today.to_s+ "." + today.to_s) unless cookies[:__utma] 
     utmb = rand(8).to_s unless cookies[:__utmb] 
     utmc = rand(8).to_s unless cookies[:__utmc] 
     utmz = rand(8).to_s+ "." + today + ".2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)" unless cookies[:__utmz] 

     Thread.new do 
     params = { 
      :utmac => GOOGLE_ANALYTICS, 
      :utmcc => "__utma%3D"+utma+"%3B%2B"+"__utmb%3D"+utmb+"%3B%2B"+"__utmc%3D"+utmc+"%3B%2B"+"__utmz%3D"+utmz+"%3B%2B", 
      :utmcn => "1", 
      :utmcs => "-", 
      :utmdt => page_title, #page title 
      :utmhn => BASE_URL, 
      :utmwv => 1, 
      :utmt => "page", 
      :utmr => request.referer 
     } 
     puts params 

     http_get("www.google-analytics.com", "/__utm.gif", params) 
     end 
    end 

Antwort

3

ich denke, dass Sie den Async-Tracker verwenden möchten, der Teil von Google Analytics ist. Hier ist ein Beispiel dafür, wie ich die Klicks erfassen, die ein asynchrones AJAX-Ereignis ausgelöst:

$('.trackable').bind('click', function(event){ 
       var action = $(this).attr('action'); 
       var category = $(this).attr('category'); 
       _gaq.push(['_trackEvent', action, category]); 
      }); 

Die „_gaq“ ist die asynchrone Warteschlange google und kann zu jeder JS-Funktion hinzugefügt werden Sie Metriken verfolgen innerhalb. Mit der obigen Funktion können Sie eine Klasse namens "trackbar" hinzufügen und Ereignisse nachverfolgen, wenn der Benutzer darauf klickt. Ein Beispiel sieht wie folgt aus:

<a category='FEATURED' action='Like This' class='trackable' href="http://MYSSERVER.com/foo.json" target='_blank'>track asynchronously.</a> 
+0

Hallo heavysixer versuchen! Danke für Ihre Antwort, aber mein Problem ist, dass ich JS-Code nicht für irgendeine Art von Bibliotheken verwenden kann, weil ich alle Arten von Anrufen auf meinen Json-APIs verfolgen möchte und ich weiß nicht, wer sie anruft. Ein spezieller Fall Kann sein, Anrufe von meinem eigenen Widget zu verfolgen, aber hier ist das Problem, dass ich nicht weiß, ob ich Google Analytics in der Domäne verwenden kann, es ist eingebettet ... Also mein einziger Weg ist Anrufe serverseitig zu verfolgen .. ., nicht wahr? – zetarun

3

Nicht schnelle Antwort, aber ich denke, Sie sollten Gabba gem

+0

Danke BurmajaM! Denken Sie, dass das eine gute Alternative sein kann, anstatt zwei verschiedene Analysesysteme zu haben? Momentan verwende ich Google Analytics, um Besucher auf Websites und serverseitigen Mixpanel-APIs zu den Besuchern von Widgets zu leiten ... – zetarun

+0

Ich bin kein Analyseexperte, aber Sie können verschiedene Berichte für die gleiche App in GA erstellen. Gabba muss nichts damit anfangen. Ich benutze Gabba nur für die Ereignisverfolgung! – BurmajaM