2009-04-29 87 views
9

我的應用程序從我的網站讀取(html)文件,並且我想使用Google Analytics跟蹤對該文件的訪問。由於GA Javascript在閱讀文件時沒有執行,因此未對其進行跟蹤。有沒有辦法從代碼中直接觸發GA,或者是從.NET應用程序執行Javascript而不添加大量依賴項?如何從代碼觸發Google Analytics(分析)?

回答

7

谷歌Analytics(分析)的工作原理是通過javascript將網絡請求發送回Google的服務器。如果您想以編程方式執行此操作,則必須自己完成此Web請求。當您在瀏覽器中加載頁面時,我會使用Fiddler或FireBug來捕獲請求的樣子。然後,您可以在.Net應用程序中使用相同的URL。

+0

感謝大衛。查看網址和Urchin JavaScript代碼,似乎並不那麼簡單。網址中有很多'魔術'數字,我無法解釋,以及請求之間的變化。不過,我會嘗試添加到我的應用程序,看看會發生什麼。 – Han 2009-04-29 21:51:50

+2

GA爲此提供了一個公共API,您實際上不必追蹤請求。 – 2009-04-30 09:55:25

+1

它必須具有這些神奇的數字,否則任何人都可以更改/影響其他人網站的訪問者統計信息(以及其他內容)。 :) – IsmailS 2010-07-05 12:34:21

2

Google Analytics提供了兩種方式來跟蹤自定義操作,事件或任何您處理的內容。在你的情況,平凡解是生成的HTML虛擬網頁瀏覽提交申請在讀取調用相應JavaScript function

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

這每Foo.html處理時間的方式,瀏覽量會爲它生成,就像它對應用程序的正常查詢一樣。

如果您想將這些Foo.html與普通的綜合瀏覽量區分開來,GA有一個很好的功能Event Tracking,那麼您應該查看一下。

1

我最終使用WebBrowser組件來加載.html文件,從而觸發GA跟蹤器。 WebBrowser組件執行嵌入式JavaScript。

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

現在我需要做的就是添加一些ErrorHandling中,擺脫難看的DoEvents和移動web瀏覽器到一個單獨的線程。

5

我最近發佈了一個.net庫,允許您使用Google Analytics通過代碼本地記錄頁面視圖。它在GNU下作爲開源發佈,因此所需要的只是正確的歸因。

你可以在這裏的庫:該API的http://www.diaryofaninja.com/projects/details/ga-dot-net

用法示例:

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

還有一個內置的HTTP處理程序,可以讓你火簡單的包含跟蹤像素跟蹤事件在頁面上:

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

或者您可以使用jQuery來跟蹤使用谷歌分析(ZIP,JPG等),在頁面內的鏈接 - b記錄一下前一段時間在這裏:

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

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(); 
    } 

} 

請參閱本 - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

相關問題