2009-04-29 8 views
9

내 앱이 내 웹 사이트에서 (html) 파일을 읽고 Google 애널리틱스를 사용하여 해당 파일에 대한 액세스를 추적하고 싶습니다. GA 자바 스크립트는 파일을 읽을 때 실행되지 않으므로 추적되지 않습니다. GA에서 코드를 직접 실행하거나 또는 여러 가지 종속성을 추가하지 않고 .NET 응용 프로그램에서 Javascript를 실행하는 방법이 있습니까?코드에서 Google Analytics를 실행하는 방법은 무엇입니까?

답변

7

Google 애널리틱스는 자바 스크립트를 통해 웹 서버로 Google 웹 로그를 생성하여 작동합니다. 프로그래밍 방식으로이 작업을 수행하려는 경우이 웹 요청을 직접 작성해야합니다. Fiddler 나 FireBug를 사용하여 브라우저에서 페이지를로드 할 때 요청이 어떻게 보이는지 파악합니다. 그런 다음 .Net 앱에서 동일한 URL을 사용할 수 있습니다.

+0

감사 데이비드 : NET 라이브러리는 https://developers.google.com/api-client-library/dotnet/apis/analytics/v3

이 또한 마음에 당신이 사용하는 경우 준수해야 할 자신의 개인 정보 보호 정책을 유지합니다. URL과 Urchin 자바 스크립트 코드를 보면 간단하지는 않습니다. URL에는 설명 할 수없는 많은 '마법'번호가 있으며 요청간에 변경됩니다. 그럼에도 불구하고 이것을 앱에 추가하고 어떤 일이 일어나는지 보도록하겠습니다. – Han

+2

GA는 공개 API를 제공하므로 요청을 추적 할 필요가 없습니다. –

+1

다른 사람의 웹 사이트 방문자 통계 (및 기타 사항)를 변경하거나 영향을 줄 수있는 마법 번호가 있어야합니다. :) – IsmailS

2

Google 애널리틱스에서는 맞춤 동작, 이벤트 또는 거래하는 두 가지 방법을 제공합니다. 귀하의 경우, 사소한 솔루션은 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(); 
    } 
} 

이제 내가 할 일은, 일부 에러 처리를 추가 추악한 DoEvents을 없애과 별도의 스레드로 웹 브라우저를 이동하는 것입니다.

+0

마지막 코드가 어떻게 나타나는지 궁금한 점은 " 이제해야 할 일은 ... "물건. =) –

5

저는 최근에 코드를 통해 Google 웹 로그 분석을 사용하여 페이지 뷰를 기본적으로 기록 할 수있는 .net 라이브러리를 출시했습니다. 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" /> 

이 또는 당신이 Google 웹 로그 분석 (ZIP, JPG 등)를 사용하여 페이지 내에서 링크를 추적하기 위해 jQuery를 사용할 수 있습니다 - B 여기 얼마 전에 그것에 대해 기록 :

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

+0

Google 애널리틱스 코드를 web.config에 정적으로 저장하는 대신 바로 설정하려면 GoogleTracking.FireTrackingEvent (request)를 호출하기 전에 request.AnalyticsAccountCode를 동적으로 설정할 수 있습니까? – 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(); 
    } 

} 

이 참조 - http://tilr.blogspot.com/2012/10/google-analytics-use-google-analytics.html

관련 문제