Hoe om Google Analytics sneller van kode?
-
03-07-2019 - |
Vra
My program lui 'n (html) lêer van my webwerf, en ek wil dop toegang tot die lêer met behulp van Google Analytics. As die GA Javascript nie ontslae uitgevoer word wanneer die lees van die lêer, is dit nie nagespoor. Is daar 'n manier om te aktiveer GA direk vanaf code of alternatiewelik, om die Javascript voer van 'n NET app sonder toevoeging van 'n klomp van die afhanklikhede?
Oplossing
Google Analytics werk deur 'n webrequest deur JavaScript terug na bediener van Google. As jy wil hierdie programmaties doen, jy moet net maak hierdie web versoek jouself. Ek sou Fiddler of Firebug gebruik om vas te vang wat die versoek lyk soos wanneer jy die bladsy laai in die leser. Dan kan jy daardie selfde URL gebruik in jou Net app.
Ander wenke
Ek het onlangs 'n NET biblioteek wat jou toelaat om native teken 'n bladsy vertoning met Google Analytics deur kode. Dit is vrygestel as open source onder GNU so al wat nodig is, is behoorlike toeskrywing.
Jy kan die biblioteek hier kry: http://www.diaryofaninja.com / projekte / details / ga-dot-net
voorbeeld gebruik van die API:
GooglePageView pageView = new GooglePageView("My page title",
"www.mydomain.com",
"/my-page-url.html");
TrackingRequest request = new RequestFactory().BuildRequest(pageView);
GoogleTracking.FireTrackingEvent(request);
Daar is ook 'n ingeboude in HTTP Handler wat jou toelaat om te vuur dop gebeure deur eenvoudig insluitend 'n dop pixel op die bladsy:
<img src="/tracker.asmx?domain=mydomain.com&pagetitle=My%20Page%20Title&url=/my-page.aspx" />
As alternatief kan jy jQuery gebruik om skakels binne 'n bladsy met behulp van Google Analytics (zip, jpg, ens) op te spoor - blog oor dit 'n ruk gelede hier:
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();
}
}
verwys hierdie - http: //tilr.blogspot com / 2012/10 / google-analise gebruik-Google-analytics.html
Google Analytics bied twee manier om persoonlike aksies, gebeure dop, of wat ook al jy gaan met. In jou geval, die triviale oplossing is om 'n virtuele bladsy vertoon vir die HTML genereer lêer jou aansoek lui in. Bel die toepaslike JavaScript funksie :
pageTracker._trackPageview("/Foo.html");
Op hierdie manier elke keer as Foo.html verwerk, 'n bladsy vertoon sal gegenereer word vir dit as dieselfde as dit 'n normale navraag by jou aansoek sal wees.
As jy wil om te onderskei hierdie Foo.html s van die normale views, GA het 'n mooi eienskap genoem Event dop dan moet jy 'n blik op te neem.
Ek het uiteindelik met behulp van die WebBrowser komponent om die Html lêer laai, en sodoende aktiveer die GA spoorsnyer. Die WebBrowser komponent voer die ingeboude JavaScript.
using (WebBrowser wb = new WebBrowser())
{
wb.Url = new Uri(@"mytrackingpage.html");
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
Nou al wat ek hoef te doen is om 'n paar errorhandling voeg, ontslae te raak van die lelike DoEvents en beweeg die WebBrowser om 'n aparte draad.
Google het biblioteke (in alfa) vir 'n paar verskillende tale vir toegang tot verskeie Google API's, insluitend Analytics - daar is 'n mooi beskrywing hier - https://developers.google.com/analytics/devguides/collection/ en die NET biblioteek is https://developers.google.com/api-client-library/dotnet/apis/analytics/v3
Hou ook in gedagte hul privaatheid beleid wat jy hoef te voldoen aan by die gebruik van hierdie: https://developers.google.com/analytics/devguides/collection/protocol/policy