我的应用从我的网站上读取(html)文件,我想使用Google Analytics跟踪对该文件的访问。由于GA Javascript在读取文件时未执行,因此不会对其进行跟踪。有没有办法直接从代码触发GA,或者从.NET应用程序执行Javascript而不添加一堆依赖项?

有帮助吗?

解决方案

Google Analytics的工作原理是通过javascript将网络请求发回Google的服务器。如果您想以编程方式执行此操作,则只需自己制作此Web请求即可。我会使用Fiddler或FireBug来捕获在浏览器中加载页面时请求的样子。然后,您可以在.Net应用程序中使用相同的URL。

其他提示

我最近发布了一个.net库,允许您通过代码使用Google Analytics本地记录页面视图。它在GNU下作为开源发布,所以所需要的只是正确的归属。

您可以在此处获取图书馆: http://www.diaryofaninja.com /项目/信息/ GA-点净

API的示例用法:

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等)跟踪页面中的链接 - 不久之前在这里写博客:

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

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 /谷歌分析 - 使用 - 谷歌-analytics.html

Google Analytics提供了两种跟踪自定义操作,事件或您处理的内容的方法。在您的情况下,简单的解决方案是为您的应用程序读取的HTML文件生成虚拟网页浏览。请调用相应的 JavaScript函数

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

这样,每次处理 Foo.html 时,都会为它生成一个综合浏览量,就像对您的应用程序进行正常查询一样。

如果您想将这些 Foo.html 与普通网页浏览区分开来,那么GA有一个很好的功能,名为事件跟踪然后你应该看看。

我最终使用WebBrowser组件加载.html文件,从而触发GA跟踪器。 WebBrowser组件执行嵌入式JavaScript。

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

现在我所要做的就是添加一些错误处理,摆脱丑陋的DoEvents并将WebBrowser移动到一个单独的线程。

Google拥有几种不同语言的图书馆(使用alpha版本)来访问各种Google API,包括Google Analytics(分析) - 这里有一个很好的描述 - https://developers.google.com/analytics/devguides/collection/ ,.NET库是 https://developers.google.com/api-client-library/dotnet/apis/analytics/v3

另请注意您在使用时必须遵守的隐私政策: https://developers.google.com/analytics/devguides/collection/protocol/policy

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top