Подтвердить что ты не робот

Как вы интегрируете Universal Analytics в расширения Chrome?

В руководстве по расширению хрома имеется учебник по установке старой аналитики: https://developer.chrome.com/extensions/tut_analytics.html

В инструкциях просто указывается ссылка на https-версию и обновление манифеста, чтобы разрешить загрузку скриптов с этого URL-адреса. Поэтому они должны применяться к новой версии. И на самом деле я вижу загрузку script с сервера.

Как только загрузка script загружает аналитику, она неправильно инициализирует ее и никогда не обрабатывает внутреннюю очередь (ga.f) для отправки этих событий на сервер. В консоли нет ошибок. Он просто ничего не делает.

Я предполагаю, что новая универсальная аналитика просто не настроена для работы в среде расширения, но универсальные документы не упоминают об этом: https://developers.google.com/analytics/devguides/collection/analyticsjs/

Кто-нибудь знает, возможно ли еще добавить Universal Analytics в расширение и когда это можно добавить?

4b9b3361

Ответ 1

Здесь issue для кода Google: решение состоит в том, чтобы передать аналитику собственную функцию проверки протокола или просто null для без проверки, в официальном пути .

Это должно произойти после ga('create', ...) :

ga('set', 'checkProtocolTask', null); // Disable file protocol checking.

Поэтому вам не нужно изменять исходную analytics.js script. Просто включите стандартный фрагмент кода отслеживания (не забудьте добавить префикс "https:" ) и добавьте " https://www.google-analytics.com" в свою Content Security Политика.

Примечание к решению аял геллеса: Нет необходимости добавлять chrome-extension://... в политику безопасности контента, поскольку она уже включена в оператор 'self'. Кроме того, вместо загрузки script через жестко запрограммированный URL-адрес вы должны использовать chrome.runtime.getURL("path/to/analytics.js"). Таким образом, вам не нужно знать свой идентификатор расширения, Chrome заполнит его для вас.

Ответ 2

Я написал сообщение в блоге об этом - Как добавить отслеживание Googles Universal Analytics в расширение Chrome

Вот его внутренности:

// Standard Google Universal Analytics code
(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','https://www.google-analytics.com/analytics.js','ga'); // Note: https protocol here

ga('create', 'UA-XXXXX-YY', 'auto');
ga('set', 'checkProtocolTask', function(){}); 
ga('send', 'pageview', '/options.html');

Особо хотелось бы выделить 3 пункта:

  • Укажите "https" в начале адреса скрипта, чтобы он соответствовал списку в файле manifest.json.
  • Переопределить checkProtocolTask пустой функцией
  • Отправьте виртуальный просмотр страницы, указав путь - /options.html - в противном случае Google Analytics отклонит URL-адрес в формате chrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/options.html

Ответ 3

Я только что столкнулся с этим и, похоже, взломал свой путь. Это может сломаться в какой-то момент или не полностью функционировать, но здесь идет:

  • Загрузите исходный код GA с расширением GA: https://www.google-analytics.com/analytics.js, поместите в свою папку расширения Chrome, где она может позже загрузиться на исходную страницу.

  • В нем найдите функцию, которая выглядит примерно так:

function Oa(){var a=M[B][E];if("http:"!=a&&"https:"!=a)throw"abort";}. 

Это "точка отказа", так как наш "протокол" - это "chrome-extension:", а не любой из двух.

  • Итак, измените эту функцию на что-то вроде:
function Oa(){var a=M[B][E];if("chrome-extension:"!=a&&"http:"!=a&&"https:"!=a)throw"abort";}
  • добавьте в свой файл манифеста "Политика безопасности контента" этого типа, убедитесь, что он указывает вашу локальную версию analytics.js, которую вы только что изменили:
"content_security_policy": "script-src 'self'  chrome-extension://EXTENSIONID/path/to/analytics.js;  object-src 'self'",
  • Измените фрагмент GA на ALSO на тот же файл, что-то вроде этого:
(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','chrome-extension://EXTENSIONID/path/to/analytics.js','ga');

надеюсь, что это поможет.

Ответ 4

Мне удалось запустить и использовать Google Analytics с помощью Google Chrome Analytics (CPA). Единственная запутанная часть заключается в том, как настроить свойство в консоли администрирования GA. Мне пришлось создать свойство Mobile Application, которое не слишком интуитивно понятное.

Кроме того, я создал страницу , которая позволяет пользователям отключать аналитику, если это необходимо, в соответствии с opt-out.

Я надеюсь, что это поможет!

Ответ 5

Существует способ использования протокола измерений для связи с Google Analytics. Я разработал для этого script:

https://github.com/melalj/universal-ga-extension

Ответ 6

Что касается нового analytics.js(как против старого ga.js), этот пример работает для меня:

function setupGoogleAnalytics() {
  if (!window.ga) {
    (function(){
      window.ga = function() {
        (window.ga.q = window.ga.q || []).push(arguments);
      }, window.ga.l = 1 * new Date();
      var tag = 'script';
      var a = document.createElement(tag);
      var m = document.getElementsByTagName(tag)[0];
      a.async = 1;
      a.src = 'https://www.google-analytics.com/analytics.js';
      m.parentNode.insertBefore(a, m);
    })();
    ga('create', 'UA-XXXXXXX-Y', 'auto');
    ga('set', 'checkProtocolTask', null);
  }
}

Обратите внимание, что вам нужно добавить следующий фрагмент content_security_policy в manifest.json:

{
...
  "content_security_policy": "script-src 'self' https://www.google-analytics.com; object-src 'self'"
...
}