2009-04-29 4 views
9

La mia app legge un file (html) dal mio sito web e vorrei monitorare gli accessi a quel file utilizzando Google Analytics. Poiché GA Javascript non viene eseguito durante la lettura del file, non viene tracciato. C'è un modo per attivare GA direttamente dal codice o, in alternativa, per eseguire il Javascript da una app .NET senza aggiungere un mucchio di dipendenze?Come attivare Google Analytics dal codice?

risposta

7

Google Analytics funziona effettuando un richiamo web tramite javascript sul server di Google. Se vuoi farlo a livello di codice, devi solo fare questa richiesta web da solo. Vorrei usare Fiddler o FireBug per catturare l'aspetto della richiesta quando carichi la pagina nel tuo browser. Quindi puoi utilizzare lo stesso URL nella tua app .Net.

+0

Grazie David. Guardando l'URL e il codice javascript di Urchin, non sembra così semplice. Ci sono molti numeri "magici" nell'URL che non posso spiegare e che cambiano tra le richieste. Tuttavia cercherò di aggiungere questo alla mia app e vedere cosa succede. – Han

+2

GA fornisce un'API pubblica per questo, in realtà non è necessario rintracciare le richieste. –

+1

Deve avere quei numeri magici, altrimenti chiunque può modificare/influire sulle statistiche dei visitatori (e altre cose) del sito web di qualcun altro. :) – IsmailS

2

Google Analytics offre due modi per tracciare azioni personalizzate, eventi o qualsiasi altra cosa tu abbia a che fare. Nel tuo caso, la soluzione banale è quello di generare una pagina visualizzata virtuale per il file HTML vostra applicazione legge nel Chiamare il appropriata JavaScript function:.

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

In questo modo ogni volta foo.html viene elaborato, una pagina visualizzata sarà generato per esso allo stesso modo che sarebbe una query normale per l'applicazione.

Se vuoi distinguere questi foo.html s dalle pagine visualizzate normali, GA ha una bella funzione chiamata Event Tracking allora dovreste dare un'occhiata a.

1

Ho finito per utilizzare il componente WebBrowser per caricare il file .html e quindi attivare GA tracker. Il componente WebBrowser esegue il codice JavaScript incorporato.

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

Ora tutto quello che devo fare è aggiungere un po 'ErrorHandling, sbarazzarsi dei brutti DoEvents e spostare il WebBrowser per un thread separato.

+0

Curioso di sapere come si presenta il tuo codice finale, dopo aver eseguito tutte le " ora tutto ciò che devo fare è ... "roba. =) –

5

Ho recentemente rilasciato una libreria .net che consente di registrare in modo nativo una visualizzazione di pagina con Google Analytics tramite codice. È rilasciato come open source sotto GNU, quindi tutto ciò che serve è una corretta attribuzione.

È possibile ottenere la libreria qui: http://www.diaryofaninja.com/projects/details/ga-dot-net

esempio di utilizzo delle API:

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

C'è anche una costruito nel gestore HTTP che permette di sparare il monitoraggio eventi, semplicemente includendo un pixel di tracciamento sulla pagina:

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

in alternativa è possibile utilizzare jQuery per monitorare i link all'interno di una pagina utilizzando Google Analytics (zip, jpg, ecc) - b registrato su di esso qualche tempo fa qui:

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

+0

Se desidero impostare il codice di Google Analytics al volo (anziché staticamente in web.config) posso semplicemente impostare request.AnalyticsAccountCode dinamicamente prima di chiamare GoogleTracking.FireTrackingEvent (richiesta)? – 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(); 
    } 

} 

riferiscono questo - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

0

Google ha librerie (in alpha) per diverse lingue per l'accesso a varie API di Google, tra cui Analytics - non c'è una bella descrizione qui - https://developers.google.com/analytics/devguides/collection/ e il.biblioteca NET è https://developers.google.com/api-client-library/dotnet/apis/analytics/v3

Anche tenere a mente la loro politica sulla privacy è necessario aderire a quando si utilizza questo: https://developers.google.com/analytics/devguides/collection/protocol/policy