Polymer — отслеживайте использование приложений с помощью Google Analytics

Я пытаюсь использовать Google Analytics (веб) с моим полимерным приложением (обновление объекта трекера в routing.html в соответствии с этот документ GA SPA). В качестве отправной точки я использовал Polymer Starter Kit. Однако я не вижу никаких просмотров страниц, кроме / — какой предлагаемый способ отслеживания использования приложения?

routing.html

page('/topstories', function () {
  app.route = 'topstories';
  window.ga('set', 'page', '/topstories');
});

page('/about', function () {
  app.route = 'about';
  window.ga('set', 'page', '/about');
});

index.html

<script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-xxxxxxxxx-1', 'auto');
    ga('send', 'pageview');

</script>

person Insectatorious    schedule 01.08.2015    source источник


Ответы (2)


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

ga('send', 'pageview');

Вы также можете написать функцию, которая сделает все это за вас, чтобы вам не приходилось каждый раз повторять вызовы set и send.

function updatePage(path) {
  return function() {
    app.route = path.slice(1);
    ga('set', 'page', path);
    ga('send', 'pageview');
  }
}

Объявления маршрута вашей страницы будут выглядеть так:

page('/topstories', updatePage('/topstories'));
page('/about', updatePage('/about'));
person Philip Walton    schedule 01.08.2015
comment
Интересно. Я работал в предположении, что будет достаточно просто установить значение на трекере, но очевидно, что send в основном скрипте выполняется только при загрузке страницы. Почти школьная ошибка с моей стороны :) - person Insectatorious; 01.08.2015
comment
Да, согласен, поначалу это может сбивать с толку. Ознакомьтесь с этим разделом Как работает analytics.js, чтобы получить более полное представление о библиотеке. - person Philip Walton; 01.08.2015

В моем решении используется промежуточный обработчик page.js:

// Routes
page('*', scrollToTop, closeDrawer, function(ctx, next) {
  ga('set', 'page', ctx.path); // simply add
  ga('send', 'pageview');      // these rows
  next();
});

Но это также срабатывает при инициализации маршрута /, поэтому, чтобы избежать двойного подсчета посещений, удалите последний ga('send', 'pageview'); из блока <script>.

person rdrey    schedule 15.01.2016