2009-04-29 15 views
9

Mi aplicación lee un archivo (html) de mi sitio web y me gustaría hacer un seguimiento de los accesos a ese archivo con Google Analytics. Como el GA Javascript no se ejecuta al leer el archivo, no se rastrea. ¿Hay alguna manera de activar GA directamente desde el código o, alternativamente, ejecutar Javascript desde una aplicación .NET sin agregar muchas dependencias?¿Cómo desencadenar Google Analytics desde el código?

Respuesta

7

Google Analytics funciona haciendo una búsqueda por medio de javascript en el servidor de Google. Si desea hacer esto programáticamente, solo debe realizar esta solicitud web usted mismo. Usaría Fiddler o FireBug para capturar cómo se ve la solicitud cuando carga la página en su navegador. Luego puede usar esa misma URL en su aplicación .Net.

+0

Gracias David. Al mirar la URL y el código javascript de Urchin, no parece tan sencillo. Hay muchos números "mágicos" en la URL que no puedo explicar, y que cambian entre las solicitudes. Sin embargo, intentaré agregar esto a mi aplicación y ver qué pasa. – Han

+2

GA proporciona una API pública para eso, realmente no tiene que rastrear las solicitudes. –

+1

Tiene que tener esos números mágicos, de lo contrario, cualquier persona puede cambiar/afectar las estadísticas de visitantes (y otras cosas) del sitio web de otra persona. :) – IsmailS

2

Google Analytics proporciona dos formas de rastrear acciones personalizadas, eventos o lo que sea que haga. En su caso, la solución trivial es generar una visita de página virtual para el archivo HTML en su aplicación lee Llame a la adecuada JavaScript function:.

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

De esta manera cada vez que foo.html se procesa, una visita de página será generado para él de la misma manera que sería una consulta normal a su aplicación.

Si desea distinguir estos foo.html s de las páginas vistas normales, GA tiene una bonita característica llamada Event Tracking entonces usted debe echar un vistazo a.

1

Terminé usando el componente WebBrowser para cargar el archivo .html y, por lo tanto, desencadenar el rastreador de GA. El componente WebBrowser ejecuta el JavaScript incrustado.

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

Ahora todo lo que tengo que hacer es añadir un poco de ErrorHandling, deshacerse de los feos DoEvents y mover el WebBrowser a un hilo separado.

+0

Es curioso saber cómo se ve el código final, después de hacer todo el " ahora todo lo que tengo que hacer es ... "cosas. =) –

5

He lanzado recientemente una biblioteca .net que le permite registrar de forma nativa una vista de página con Google Analytics a través del código. Se libera como fuente abierta bajo GNU, por lo que todo lo que se requiere es una atribución adecuada.

Usted puede obtener la biblioteca aquí: http://www.diaryofaninja.com/projects/details/ga-dot-net

ejemplo de uso de la API:

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

Hay también construido en un controlador HTTP que le permite disparar el seguimiento de eventos simplemente incluyendo un píxel de seguimiento en la página:

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

Alternativamente, puede utilizar jQuery para realizar un seguimiento de los enlaces dentro de una página a través de Google Analytics (zip, jpg, etc.) - b conectado al respecto hace un tiempo aquí:

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

+0

Si me gustaría establecer el código de Google Analytics sobre la marcha (en lugar de estáticamente en web.config) ¿puedo simplemente establecer request.AnalyticsAccountCode dinámicamente antes de llamar a GoogleTracking.FireTrackingEvent (request)? – 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(); 
    } 

} 

refieren esto - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

0

Google tiene bibliotecas (en alfa) para varios idiomas diferentes para acceder a diversos API de Google, incluyendo Analytics - hay una buena descripción aquí - https://developers.google.com/analytics/devguides/collection/ y el.Biblioteca de red es https://developers.google.com/api-client-library/dotnet/apis/analytics/v3

También hay que tener en cuenta su política de privacidad que tiene que adherirse a cuando se utiliza este: https://developers.google.com/analytics/devguides/collection/protocol/policy

Cuestiones relacionadas