【问题标题】:How to trigger Google Analytics from code?如何从代码中触发 Google Analytics?
【发布时间】:2009-04-29 21:14:16
【问题描述】:

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

【问题讨论】:

    标签: .net javascript google-analytics


    【解决方案1】:

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

    【讨论】:

    • 谢谢大卫。查看 URL 和 Urchin javascript 代码,似乎并不那么简单。 URL 中有很多我无法解释的“神奇”数字,以及请求之间的变化。不过,我会尝试将其添加到我的应用中,看看会发生什么。
    • GA 为此提供了一个公共 API,您真的不必跟踪请求。
    • 它必须有这些神奇的数字,否则任何人都可以更改/影响其他人网站的访问者统计数据(和其他内容)。 :)
    • 您可能会发现修改类似code.google.com/mobile/analytics/docs/web 的内容很有用。它对可能不支持 JavaScript 的实例(在本例中为移动设备)进行服务器端跟踪。您可以为提供 html 文件的应用程序创建一个 HTTPHandler,并将链接中的建议转换为服务调用。如果您这样做,您可能会发现为这些请求创建另一个帐户更容易,因为您的所有流量都可能从您的托管服务器报告。以标准方式实际执行此操作并在您的应用程序内的浏览器中托管 html 可能更容易。
    • 这里是跟踪代码参数列表code.google.com/apis/analytics/docs/tracking/…
    【解决方案2】:

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

    你可以在这里获取图书馆:http://www.diaryofaninja.com/projects/details/ga-dot-net

    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 来使用 Google Analytics(zip、jpg 等)跟踪页面中的链接 - 不久前在此处发布了有关它的博客:

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

    【讨论】:

    • 如果我想动态设置 Google Analytics 代码(而不是在 web.config 中静态设置),我可以在调用 GoogleTracking.FireTrackingEvent(request) 之前动态设置 request.AnalyticsAccountCode 吗?
    【解决方案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

    【讨论】:

      【解决方案4】:

      Google Analytics(分析)提供了两种方法来跟踪自定义操作、事件或您处理的任何事情。在您的情况下,简单的解决方案是为您的应用程序读取的 HTML 文件生成一个虚拟页面浏览量。调用适当的JavaScript function

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

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

      如果您想将这些 Foo.html 与普通浏览量区分开来,GA 有一个不错的功能,称为 Event Tracking,那么您应该看看。

      【讨论】:

        【解决方案5】:

        我最终使用 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 移动到单独的线程。

        【讨论】:

        • 在完成所有“现在我所要做的就是......”之后,很想知道你的最终代码是什么样子的。 =)
        【解决方案6】:

        Google 有几种不同语言的库(alpha 版),用于访问各种谷歌 API,包括分析——这里有一个很好的描述——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

        【讨论】:

          猜你喜欢
          • 2011-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 2022-08-24
          • 1970-01-01
          • 2018-02-10
          • 1970-01-01
          相关资源
          最近更新 更多