Как вы интегрируете 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 в расширение и когда это можно добавить?
Ответы
Ответ 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'"
...
}