Вопрос

Мое приложение считывает (html) файл с моего веб-сайта, и я хотел бы отслеживать доступ к этому файлу с помощью Google Analytics.Поскольку Javascript GA не запускается при чтении файла, он не отслеживается.Есть ли способ запустить GA непосредственно из кода или, альтернативно, выполнить Javascript из приложения .NET без добавления множества зависимостей?

Это было полезно?

Решение

Google Analytics работает, отправляя веб-запрос через JavaScript обратно на сервер Google.Если вы хотите сделать это программно, вам просто нужно сделать этот веб-запрос самостоятельно.Я бы использовал Fiddler или FireBug, чтобы зафиксировать, как выглядит запрос при загрузке страницы в браузере.Затем вы можете использовать тот же URL-адрес в своем приложении .Net.

Другие советы

Недавно я выпустил библиотеку .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

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

Google Analytics предоставляет два способа отслеживания пользовательских действий, событий и всего, с чем вы имеете дело.В вашем случае тривиальным решением является создание виртуального просмотра страницы для HTML-файла, который считывает ваше приложение.Позвоните в соответствующий Функция JavaScript:

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

Таким образом каждый раз Фу.html обрабатывается, для него будет создан просмотр страницы так же, как и для обычного запроса к вашему приложению.

Если вы хотите отличить эти Фу.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 есть библиотеки (в альфа-версии) для нескольких разных языков для доступа к различным 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