2009-04-29 3 views
9

Meine App liest eine (HTML-) Datei von meiner Website, und ich möchte Zugriffe auf diese Datei mit Google Analytics verfolgen. Da das GA Javascript beim Lesen der Datei nicht ausgeführt wird, wird es nicht verfolgt. Gibt es eine Möglichkeit, GA direkt aus dem Code auszulösen oder alternativ das Javascript aus einer .NET-App auszuführen, ohne eine Reihe von Abhängigkeiten hinzuzufügen?Wie kann Google Analytics über Code ausgelöst werden?

Antwort

7

Google Analytics funktioniert, indem Sie eine Webanfrage über Javascript an den Google-Server senden. Wenn Sie dies programmgesteuert durchführen möchten, müssen Sie diese Webanforderung nur selbst erstellen. Ich würde Fiddler oder FireBug verwenden, um zu erfassen, wie die Anfrage aussieht, wenn Sie die Seite in Ihren Browser laden. Dann können Sie dieselbe URL in Ihrer .Net App verwenden.

+0

Dank David. Mit Blick auf die URL und den Urchin-JavaScript-Code scheint das nicht so einfach zu sein. Es gibt viele "magische" Zahlen in der URL, die ich nicht erklären kann und die zwischen den Anfragen wechseln. Trotzdem werde ich versuchen, dies meiner App hinzuzufügen und zu sehen, was passiert. – Han

+2

GA bietet eine öffentliche API dafür, Sie müssen die Anfragen wirklich nicht aufspüren. –

+1

Es muss diese magischen Zahlen haben, sonst kann jemand Besucherstatistiken (und andere Dinge) der Website eines anderen ändern/beeinflussen. :) – IsmailS

2

Google Analytics bietet zwei Möglichkeiten zum Nachverfolgen benutzerdefinierter Aktionen, Ereignisse oder anderer Funktionen. In Ihrem Fall die triviale Lösung eine virtuelle Seitenzugriff für die HTML-Datei Ihrer Anwendung in liest zu erzeugen, ist Rufen Sie die entsprechenden JavaScript function.

pageTracker._trackPageview("/Foo.html"); 

Auf diese Weise jedes Mal foo.html verarbeitet wird, wird ein Seitenzugriff sein generiert für dasselbe wie es eine normale Abfrage für Ihre Anwendung wäre.

Wenn Sie diese Foo.html s von den normalen Seitenaufrufen unterscheiden möchten, hat GA eine nette Funktion namens Event Tracking, dann sollten Sie einen Blick darauf werfen.

1

Ich benutzte die WebBrowser-Komponente, um die .html-Datei zu laden und dadurch den GA-Tracker auszulösen. Die WebBrowser-Komponente führt das eingebettete JavaScript aus.

using (WebBrowser wb = new WebBrowser()) 
{ 
    wb.Url = new Uri(@"mytrackingpage.html"); 
    while (wb.ReadyState != WebBrowserReadyState.Complete) 
    { 
     Application.DoEvents(); 
    } 
} 

Alles was ich jetzt tun müssen, ist eine Fehlerbehandlung hinzuzufügen, loszuwerden, die hässlichen DoEvents und das WebBrowser auf einem separaten Thread zu bewegen.

+0

Neugierig zu wissen, wie Ihr endgültiger Code aussieht, nachdem Sie alle " Jetzt muss ich nur noch ... "Zeug. =) –

5

Ich habe kürzlich eine .net-Bibliothek veröffentlicht, mit der Sie eine Seitenansicht mit Google Analytics über Code nativ protokollieren können. Es wird als Open Source unter GNU veröffentlicht, so dass nur eine korrekte Attribution erforderlich ist.

Sie können die Bibliothek bekommen hier: http://www.diaryofaninja.com/projects/details/ga-dot-net

Beispiel für die Verwendung der API:

GooglePageView pageView = new GooglePageView("My page title", 
           "www.mydomain.com", 
           "/my-page-url.html"); 
TrackingRequest request = new RequestFactory().BuildRequest(pageView); 
GoogleTracking.FireTrackingEvent(request); 

Es gibt eine auch in HTTP-Handler gebaut, die Sie Ereignisse Tracking durch einfaches einschließlich ein Tracking-Pixel Feuer erlaubt auf der Seite:

<img src="/tracker.asmx?domain=mydomain.com&pagetitle=My%20Page%20Title&url=/my-page.aspx" /> 

Alternativ können Sie jquery verfolgen Links innerhalb einer Seite mit Google Analytics (zip, jpg, etc.) verwenden - b vor einer Weile über sie angemeldet hier:

http://www.diaryofaninja.com/blog/2009/09/17/random-file-zip-and-pdf-tracking-using-jquery-amp-google-analytics

+0

Wenn ich den Google Analytics Code im laufenden Betrieb einstellen möchte (anstatt statisch in web.config), kann ich request.AnalyticsAccountCode dynamisch vor dem Aufruf von GoogleTracking.FireTrackingEvent (request) setzen? – Korayem

3
private void analyticsmethod4(string trackingId, string pagename) 
{ 
    Random rnd = new Random(); 

    long timestampFirstRun, timestampLastRun, timestampCurrentRun, numberOfRuns; 

    // Get the first run time 
    timestampFirstRun = DateTime.Now.Ticks; 
    timestampLastRun = DateTime.Now.Ticks-5; 
    timestampCurrentRun = 45; 
    numberOfRuns = 2; 

    // Some values we need 
    string domainHash = "123456789"; // This can be calcualted for your domain online 
    int uniqueVisitorId = rnd.Next(100000000, 999999999); // Random 
    string source = "Shop"; 
    string medium = "medium123"; 
    string sessionNumber = "1"; 
    string campaignNumber = "1"; 
    string culture = Thread.CurrentThread.CurrentCulture.Name; 
    string screenRes = Screen.PrimaryScreen.Bounds.Width + "x" + Screen.PrimaryScreen.Bounds.Height; 


    string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
     "?utmwv=4.6.5" + 
     "&utmn=" + rnd.Next(100000000, 999999999) + 
    // "&utmhn=hostname.mydomain.com" + 
     "&utmcs=-" + 
     "&utmsr=" + screenRes + 
     "&utmsc=-" + 
     "&utmul=" + culture + 
     "&utmje=-" + 
     "&utmfl=-" + 
     "&utmdt=" + pagename + 
     "&utmhid=1943799692" + 
     "&utmr=0" + 
     "&utmp=" + pagename + 
     "&utmac=" +trackingId+ // Account number 
     "&utmcc=" + 
      "__utma%3D" + domainHash + "." + uniqueVisitorId + "." + timestampFirstRun + "." + timestampLastRun + "." + timestampCurrentRun + "." + numberOfRuns + 
      "%3B%2B__utmz%3D" + domainHash + "." + timestampCurrentRun + "." + sessionNumber + "." + campaignNumber + ".utmcsr%3D" + source + "%7Cutmccn%3D(" + medium + ")%7Cutmcmd%3D" + medium + "%7Cutmcct%3D%2Fd31AaOM%3B"; 


    using (var client = new WebClient()) 
    { 
     client.DownloadData(statsRequest); 
     //Stream data = client.OpenRead(statsRequest); 
     //StreamReader reader = new StreamReader(data); 
     //string s = reader.ReadToEnd(); 
    } 

} 

diese verweisen - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

0

Google hat Bibliotheken (in alpha) für mehrere verschiedene Sprachen für verschiedene Google-APIs zugreifen, einschließlich Analytics - es gibt eine schöne Beschreibung hier - https://developers.google.com/analytics/devguides/collection/ und die.NET-Bibliothek ist https://developers.google.com/api-client-library/dotnet/apis/analytics/v3

Denken Sie auch daran, ihre Datenschutzrichtlinien Sie beachten müssen, um bei der Verwendung dieser: https://developers.google.com/analytics/devguides/collection/protocol/policy