Comment intégrez-vous Universal Analytics dans les extensions Chrome?

Le guide d’extension de chrome a un tutoriel pour l’ancienne installation d’parsing: https://developer.chrome.com/extensions/tut_analytics.html

Les instructions indiquent simplement de créer un lien vers la version https et de mettre à jour le manifeste pour autoriser le chargement de scripts à partir de cette URL. Donc, ceux-ci devraient toujours s’appliquer à la nouvelle version. Et en fait, je peux voir le script se charger depuis le serveur.

Une fois que le script charge les parsings, elles ne sont pas initialisées correctement et ne traitent jamais sa queue interne (ga.f) pour envoyer ces événements au serveur. Il n’y a pas d’erreur dans la console. C’est tout simplement silencieux.

Je pense que le nouvel Universal Analytics n’est pas configuré pour fonctionner dans l’environnement d’extension, mais les documents universels ne le mentionnent pas: https://developers.google.com/analytics/devguides/collection/analyticsjs/

Est-ce que quelqu’un sait s’il est même possible d’append Universal Analytics à une extension et quand cela pourrait être ajouté?

Il y a un problème pour cela sur le code Google: La solution consiste à passer les parsings de votre propre fonction de vérification de protocole ou simplement à la rendre null pour aucune vérification, de manière officielle .

Cela doit venir après ga('create', ...) :

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

Vous n’avez donc pas besoin de modifier le script analytics.js d’origine. Il vous suffit d’inclure l’extrait de code de suivi standard (n’oubliez pas d’append le préfixe “https:”) et d’append ” https://www.google-analytics.com ” à votre stratégie de sécurité du contenu.

Une note à la solution d’ayal gelles: Il n’est pas nécessaire d’append chrome-extension://... à la politique de sécurité du contenu car elle est déjà incluse dans la déclaration 'self' . De plus, au lieu de charger le script via une URL codée en dur, vous devez utiliser chrome.runtime.getURL("path/to/analytics.js") . De cette façon, vous n’avez pas besoin de connaître l’identifiant de votre extension, Chrome le remplira pour vous.

J’ai écrit un article sur ce blog – Comment append le suivi Universal Analytics de Google à une extension Chrome

En voici le courage:

 // 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('require', 'displayfeatures'); ga('send', 'pageview', '/options.html'); 

Il y a 3 points que j’aimerais particulièrement souligner:

  • Spécifiez «https» au début de l’adresse du script pour correspondre à la liste du fichier manifest.json
  • Remplacer checkProtocolTask par une fonction vide
  • Envoyez une page virtuelle en spécifiant le chemin – /options.html – sinon Google Analytics rejettera une URL au format chrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/options.html

Je viens de rencontrer cela et semble avoir piraté mon chemin à travers. Cela pourrait casser à un moment donné ou ne pas être totalement fonctionnel, mais voici:

  • Téléchargez le code source allégé GA + modifié ici: https://www.google-analytics.com/analytics.js , placez-le dans votre dossier d’extension chrome, où il pourra être ultérieurement chargé par la page d’arrière-plan.

  • Dans ce document, trouvez une fonction qui ressemble à ceci:

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

C’est le “sharepoint défaillance” car notre “protocole” est “chrome-extension:” et non pas l’un des deux.

  • Donc, changez cette fonction pour être quelque chose comme:
 function Oa(){var a=M[B][E];if("chrome-extension:"!=a&&"http:"!=a&&"https:"!=a)throw"abort";} 
  • Ajoutez une “politique de sécurité du contenu” de ce type à votre fichier manifeste, assurez-vous qu’il pointe vers votre version locale de analytics.js que vous venez de modifier:
 "content_security_policy": "script-src 'self' chrome-extension://EXTENSIONID/path/to/analytics.js; object-src 'self'", 
  • Modifiez l’extrait de GA pour qu’il pointe également vers ce même fichier, par exemple:
 (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'); 

J’espère que cela t’aides.

J’ai réussi à faire fonctionner Google Analytics en utilisant Chrome Platform Analytics (CPA). La seule partie déroutante est la configuration d’une propriété dans la console d’administration de GA. J’ai dû créer une propriété d’application mobile, qui n’est pas trop intuitive.

J’ai également créé une page d’options qui permet aux utilisateurs de désactiver l’parsing, si nécessaire, pour se conformer aux exigences de désinscription .

J’espère que ça aide!

Il existe un moyen d’utiliser le protocole de mesure pour communiquer avec Google Analytics. J’ai développé un script pour cela:

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

En ce qui concerne les nouveaux analytics.js (à l’inverse de l’ancien ga.js), cet exemple fonctionne pour moi:

 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); } } 

Veuillez noter que vous devez append l’extrait suivant content_security_policy au fichier manifest.json:

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