Je crée une application et je souhaite obtenir des analyses des utilisateurs. J'ai essayé d'utiliser le plugin Phonegap, mais je n'ai pas eu la moindre chance d'essayer de le mettre en œuvre.
Je me demandais s'il était possible d'avoir Google Analytics en traitant l'application comme une page Web normale et en mettant du javascript dans l'en-tête de ma page.
Y a-t-il une meilleure manière de faire cela? et Phonegap Google Analytics est-il bien meilleur que ce que j'essaie de faire?
Google Analytics dispose maintenant d'une option expliquée ici pour utiliser LocalStorage à la place des cookies et il existe également un hack pour le faire fonctionner dans les vues Web (file://
urls). Donc, au lieu d'utiliser le code que j'ai suggéré précédemment, vous pouvez simplement faire ceci:
// THIS IS FOR LOCALSTORAGE
var GA_LOCAL_STORAGE_KEY = 'ga:clientId';
ga('create', 'UA-XXXXX-Y', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
ga(function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
// THIS IS FOR FILE URL SUPPORT
ga('set', 'checkProtocolTask', function(){ /* noop */});
// And then as usual...
ga('send', 'pageview');
La solution pokki suggérée par Alex fonctionne bien avec quelques ajustements pour supprimer le besoin de Pokki.
J'ai créé un projet git pour cette version nettoyée ici:
https://github.com/ggendre/GALocalStorage
Fonctionne très bien sur Android 4.1 et iOS 6, je vais tester plus d'appareil très bientôt. J'espère que cela t'aides ! :)
Regardez la vidéo pour la voir en action:
http://screencast.com/t/6vkWlZOp
Après quelques recherches, j'ai trouvé une solution. Je suis tombé sur ce fil du groupe Google Phonegap: https://groups.google.com/forum/#!msg/phonegap/uqYjTmd4w_E/YD1QPmLSxf4J .__ (merci TimW et Dan Levine!) Dans ce fil, j'ai trouvé qu'il était possible d'utiliser Google Analytics sans plugin. Il vous suffit de télécharger le fichier ga.js à partir de Google http://www.google-analytics.com/ga.js (il suffit d’enregistrer la page dans votre dossier www).
Puis modifiez le fichier ga.js en lui ajoutant un caractère. Recherchez dans le fichier ga.js le mot "fichier:" et remplacez-le par "_file:".
Dans le fil que j'ai lié à ci-dessus, "TimW" explique le raisonnement pour ceci:
Pour l'essentiel, Google Analytics ne fonctionnera pas s'il est utilisé à partir d'un fichier: /// url. Dans iOS/PhoneGap, c'est le cas. Afin de résoudre ce problème problème, vous devez d’abord télécharger le fichier ga.js à partir de Google et inclure dans le cadre de votre construction locale. Vous remarquerez que ce fichier est obfusqué. Recherchez dans le fichier la chaîne "fichier:" qui devrait apparaître juste une fois. Lorsque vous le trouvez, ajoutez un trait de soulignement au début (pour que Devienne "_file:"). Cela l'empêche de correspondre au protocole de la page emplacement (qui est "fichier:").
Après avoir ajouté un caractère au fichier ga.js, incluez simplement ce qui suit en haut de votre page:
<script type="text/javascript" src="ga.js"></script>
<script>
var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-YOUR_ID_HERE']);
_gaq.Push(['_setDomainName', 'none']);
_gaq.Push(['_trackPageview', 'NAME_OF_PAGE']);
</script>
J'ai testé cela sur le simulateur et j'ai pu prouver qu'il fonctionnait à l'aide de la vue en temps réel de Google Analytics. Le simulateur fonctionnait sur iOS 5.0. Mon téléphone est toujours sous iOS 4.2 et lorsque je l'ai testé sur mon appareil, il n'apparaissait pas dans le suivi en temps réel.
Dans le fil de discussion, quelqu'un a évoqué les mêmes problèmes avec Android 4.0+ ... J'espère qu'il y aura une meilleure solution pour cela à l'avenir, mais pour l'instant, c'est le moyen le plus simple et le moins compliqué d'obtenir des analyses de base pour mon application. Il ne peut pas faire de suivi hors ligne, mais c'est quand même un peu effrayant.
Même si les utilisateurs d’iOS 4 et d’Android sont minoritaires sur le marché (voir le graphique à secteurs):
Je voudrais toujours obtenir des données de tous les systèmes d'exploitation.
Nous sommes en février 2017 et il n'est plus nécessaire d'éditer analytics.js, ni de librairie ni de plugin, ou du moins je n'en avais pas besoin. Beaucoup de choses qui ont été dites ces dernières années sont obsolètes ou obsolètes, alors voici mon guide complet et à jour.
1. Le fichier config.xml
Dans votre config.xml, vous devez autoriser la requête intersite:
<access Origin="https://www.google-analytics.com" />
2. Le HTML
Dans votre méta-tag CSP, si vous choisissez d'en avoir une, vous devez également autoriser les appels vers Google. Cela peut ressembler à:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' 'unsafe-eval' https://ssl.gstatic.com https://www.google-analytics.com;">
3. Le javascript
Voici le code commenté d'une application Web pouvant s'exécuter à la fois dans le navigateur et dans une application fournie avec Cordova. Vous pouvez ignorer le bloc else
si vous ne vous souciez pas du navigateur.
// the default GA code, nothing to change
(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');
var fields = {
// note: you can use a single tracking id for both the app and the website,
// don't worry it won't mix the data. More about this in the 3rd section
trackingId: 'UA-XXXXXXXX-Y'
};
// if we are in the app (the protocol will be file://)
if(document.URL.indexOf('http://') !== 0){
// we store and provide the clientId ourselves in localstorage since there are no
// cookies in Cordova
fields.clientId = localStorage.getItem('ga:clientId');
// disable GA's cookie storage functions
fields.storage = 'none';
ga('create', fields);
// prevent tasks that would abort tracking
ga('set', {
// don't abort if the protocol is not http(s)
checkProtocolTask: null,
// don't expect cookies to be enabled
checkStorageTask: null
});
// a callback function to get the clientId and store it ourselves
ga(function(tracker){
localStorage.setItem('ga:clientId', tracker.get('clientId'));
});
// send a screenview event
ga('send', {
// these are the three required properties, check GA's doc for the optional ones
hitType: 'screenview',
// you can edit these two values as you wish
screenName: '/index.html',
appName: 'YourAppName'
});
}
// if we are in a browser
else {
ga('create', fields);
// send a pageview event
ga('send', {
// this is required, there are optional properties too if you want them
hitType: 'pageview'
});
}
3. Votre GA compte
App
.Si vous n'avez pas besoin de surveiller le trafic de votre application Web à partir d'un site Web, vous pouvez arrêter de lire ici, sinon lisez la suite. Je suppose que vous utilisez un seul compte pour le suivi du site Web et de l'application.
screenview
. Il existe un guide officiel iciWebsite
. Appliquez un filtre personnalisé "Application? => No" dessus.App
. Par défaut (sans filtre), toutes les données seront affichées.Notes complémentaires
<access>
et votre CSP*.google-analytics.com
dans le CSP ne fonctionnerait pas. Bien que cette stratégie fonctionne avec Chrome (56), elle ne fonctionne pas avec Cordova (5.6.0).J'utilisais l'application Ionic (basée sur Cordova) comme site Web mobile et GA y travaillait. Lorsque j'ai envoyé la même application sur ios natif, elle a cessé de fonctionner.
Numéro 1.
Lors de la vérification des journaux du simulateur, nous avons constaté que GA n’était pas chargé correctement. Il essayait le chargement file://
. Pour résoudre ce problème, j'ai ajouté https:
à l'URL GA sous
(window,document,'script','//www.google-analytics.com/analytics.js','ga')
Issue 2. Par défaut, Google abandonne la demande si le protocole de page n'est pas http ou https. Pour résoudre ce problème
ga('set', 'checkProtocolTask', null);
Et vous devriez être prêt. Après avoir apporté ces modifications, j'ai pu confirmer les événements sur GA. J'espère que cela vous aide aussi.
Ca n'a pas marché pour moi. Le problème que Google Code utilise les cookies et ne fonctionne pas avec file: // urls.
J'ai trouvé une bonne implémentation qui utilise localStorage au lieu des cookies: https://developers.pokki.com/docs/tutorials.php
J'ai implémenté la bibliothèque segment.io - analytics.js dans une application HTML5/météore.
Je n'ai pas de plugin d'analyse dans phonegap (3.1). Travaillé immédiatement pour iOS.
Après la mise en œuvre, les analyses de l'application Android ne s'affichaient pas pendant environ 4 heures. Il a ensuite commencé à fonctionner sans modification de l’écart téléphonique ou des paramètres météores.
J'espère que cela aidera quelqu'un à éviter quelques heures de recherche d'un virus mystérieux.
Remarque: Assurez-vous que l’accès correct est réglé sur Origin, par exemple . Add.
ce plugin phonegap aidera à intégrer Google Analytics dans l'application phonegap. Lisez ce blog pour en savoir plus sur l'intégration de Google Analytics dans phonegap. vous pouvez également télécharger le code de démonstration fonctionnel à partir de ici .
REMARQUE: l'ID de suivi du client Google Analytics généré pour la plate-forme mobile ne prend en charge que IOS et Android.So, si vous souhaitez suivre votre Google Analytics, assurez-vous de l'avoir créé pour le site Web . avec intervalle téléphonique toutes les applications de la plate-forme . Vous pouvez alors simplement télécharger GALocalStorage à partir du lien ci-dessous et le placer dans votre dossier js sous le dossier www
www
|__
js
|__
GALocalStorage.js
Ensuite, écrivez le code ci-dessous sous votre balise <head> et commencez à afficher les utilisateurs actifs en temps réel dans vos tableaux de bord.
https://github.com/ggendre/GALocalStorage
<script>
ga_storage._setAccount('UA-XXXXXXXX-X'); //Replace with your own
ga_storage._trackPageview('Home Screen');
</script>
Vous pouvez utiliser la bibliothèque GALocalstorage
et cela fonctionne bien sur les appareils mobiles.
C'est facile à installer
<script type="text/javascript" src="js/libs/GALocalStorage.js"></script>
<script>
ga_storage._setAccount('UA-37167XXX-1'); //Replace with your own
ga_storage._trackPageview('/index.html');
</script>
et c'est tout, aucune modification ou autre chose.
Vous devez créer
Website Account
dansGoogle analytics
pour utiliser cette bibliothèque.
Solution rapide et sale… .. L’utilisation peut utiliser un iframe caché par la lumière comme ceci;
<iframe src="http://www.yourwebsite.com/userControls/GoogleAnalytics.html?param=extraParamHere" style="visibility: hidden"></iframe>
Et chaque fois que vous demandez une page dans l'application PhoneGap, rechargez cette iframe pour initialiser le suivi.
Si vous rencontrez des problèmes avec l'excellente solution de Guillaume Gendre sous Android 4.1 ou une autre plate-forme spécifique, cela pourrait les résoudre.
Si les journaux de votre console Android affichent "Erreur de chrome inconnue: 0", vous devrez probablement affiner vos autorisations d'accès dans config.xml. J'ai résolu mon problème et l'ai décrit ici .