Как использовать Google Analytics с PhoneGap без плагина?

Я делаю приложение и хочу получать аналитику от пользователей. Я пытался использовать плагин Phonegap, но мне не повезло, пытаясь реализовать его.

Мне было интересно, можно ли получить Google Analytics, рассматривая приложение как обычную веб-страницу и помещая некоторый javascript в заголовок моей страницы.

Есть лучший способ сделать это? и намного ли лучше Phonegap Google Analytics, чем то, что я пытаюсь сделать?

 9to5ios10 июл. 2015 г., 06:48
знаю, что уже поздно, но проверь одно из рабочих решений.

Ответы на вопрос(11)

http://screencast.com/t/6vkWlZOp

После некоторых исследований я нашел решение. Я наткнулся на эту тему в Google Phonegap Group:https://groups.google.com/forum/#!msg/phonegap/uqYjTmd4w_E/YD1QPmLSxf4J (спасибо TimW и Дэну Левайну!) В этой теме я обнаружил, что можно использовать Google Analytics без плагина. Все, что вам нужно сделать, это загрузить файл ga.js из Googlehttp://www.google-analytics.com/ga.js (просто сохраните страницу в папку www)

Затем измените файл ga.js, добавив в него один символ. Найдите в файле ga.js слово & quot; файл: & quot; и замените его на "_file:".

В теме, на которую я ссылался выше, "TimW" объясняет причину этого:

Essentially, Google Analytics won't work if its being used from a file:/// url. In iOS/PhoneGap this is the case. In order to solve this problem you must first download the ga.js file from google and include it as part of your local build. You'll notice the this file is obfuscated. Search the file for the string "file:" which should occur only once. When you find it, add an underscore to the beginning (so it becomes "_file:"). This prevents it matching the protocol of the page location (which is "file:").

После того, как вы добавили один символ в файл ga.js, просто добавьте следующее в верхней части своей страницы:

<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>

Я проверил это на симуляторе и получил подтверждение того, что он работает с использованием представления в реальном времени в Google Analytics. Симулятор работал на iOS 5.0. Мой телефон все еще работает на iOS 4.2, и когда я тестировал его на своем устройстве, он не обнаруживался в режиме реального времени.

В этой теме кто-то упомянул те же проблемы с Android 4.0 + ... Надеюсь, в будущем найдется лучшее решение для этого, но пока это самый простой и наименее сложный способ получить базовую аналитику для моего приложения. Он не может выполнять автономное отслеживание, но это все равно немного жутко.

Хотя пользователи iOS 4 и Android на рынке составляют меньшинство (см. Круговую диаграмму):

http://static7.businessinsider.com/image/4fd65fac6bb3f7925700000f/chart-of-the-day-ios-vs-android-june-2012.jpg

Я бы хотел получить данные со всех ОС.

 19 нояб. 2012 г., 18:12
Кто-нибудь выяснил, почему это не работает в Android 4.0+?
 07 окт. 2012 г., 22:16
Что произойдет, если нет подключения к интернету?
 Mike07 окт. 2012 г., 22:48
Нет подключения к Интернету ... нет отслеживания: / но когда вы думаете об этом, в любом случае довольно жутко отслеживать вас, когда вы не в сети. Слишком Большой Брат, если ты понимаешь, о чем я.
 28 сент. 2012 г., 22:03
Вы нашли решение проблемы отслеживания вообще? Я в настоящее время ищу полное решение, но еще не нашел хорошего.
 04 янв. 2013 г., 10:39
Я создал lib на основе реализации GAPokki в pokki (с LocalStorage), и она прекрасно работает на Android 4.0+. Проверьте это в ответе ниже

Использование может использовать скрытый свет iframe, как это;

<iframe src="http://www.yourwebsite.com/userControls/GoogleAnalytics.html?param=extraParamHere" style="visibility: hidden"></iframe>

И каждый раз, когда вы запрашиваете страницу в приложении PhoneGap, перезагружайте этот iframe для инициализации трека.

eteor.

У меня нет плагина аналитики в phonegap (3.1). Работал сразу для iOS.

После внедрения аналитика из приложения Android не отображалась около 4 часов. Затем он начал работать без изменений в телефонной пробке или настройках метеора.

Надеюсь, это поможет кому-то избежать нескольких часов поиска загадочной ошибки.

Примечание. Убедитесь, что указан правильный источник доступа, например, добавлять

что код Google использует файлы cookie, и он не работает с file: // urls.

Я нашел хорошую реализацию, которая использует localStorage вместо файлов cookie: https://developers.pokki.com/docs/tutorials.php

 04 янв. 2013 г., 10:35
Привет! спасибо за вашу ссылку, это работало отлично с несколькими взломами, чтобы убрать необходимость в pokki. Я создал git-репо здесь:github.com/ggendre/GALocalStorage

кто сталкивается с проблемами с отличным решением Guillaume Gendre для Android 4.1 или другой конкретной платформы, это может решить их.

Если в журналах консоли Android отображается «Неизвестная ошибка Chromium: 0», вероятно, вам необходимо уточнить свои права доступа в файле config.xml. Я исправил свою проблему и описал ееВот.

GALocalstorage библиотека, и она отлично работает на мобильных устройствах

Его легко настроить

<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>

и это все, никаких изменений или чего-либо еще.

You need to create Website Account in Google analytics to use this library

Библиотека на GitHub

этотплагин поможет интегрировать Google Analytics в приложение PhoneGap. Прочитайте этот блог чтобы узнать больше, как интегрировать Google Analytics в PhoneGap. Вы также можете загрузить рабочий демонстрационный код сВот.

созданный для мобильной платформы, поддерживается только для IOS и Android. Поэтому, если вы хотите отслеживать свою аналитику Google, убедитесь, что вы создали ее для веб-сайта. Только Tracking ID для веб-сайта работают с пробелами телефона всех приложений платформы. Затем вы можете просто скачать GALocalStorage по ссылке ниже, а затем поместить ее в папку js в папке www

www
 |__
    js
      |__
          GALocalStorage.js

Затем напишите приведенный ниже код под своим & lt; головка & GT; тег, и его начало показывает активных пользователей в реальном времени на ваших инструментальных панелях.

https://github.com/ggendre/GALocalStorage

       <script>
        ga_storage._setAccount('UA-XXXXXXXX-X'); //Replace with your own
        ga_storage._trackPageview('Home Screen');
        </script>

го сайта, и GA работал на него. Когда я отправил то же приложение на родной ios, оно перестало работать.

Issue 1.
Проверив логи симулятора, обнаружил, что GA загружался неправильно. Пытался грузfile://, Чтобы исправить это, я предпочелhttps: на GA url под

(window,document,'script','//www.google-analytics.com/analytics.js','ga')

Issue 2. Google by default aborts the request if the page protocol is not http or https. To fix this

ga('set', 'checkProtocolTask', null);

И вы должны быть установлены. После внесения этих изменений мне удалось подтвердить события на ГА. Надеюсь, это вам тоже поможет.

 30 авг. 2016 г., 15:40
Обратите внимание, что «checkProtocolTask» вызов должен прийти после того, как «создать» вызов. Источник:developers.google.com/analytics/devguides/collection/…
Решение Вопроса
[edit] Google Analytics now works with localstorage in hybrid apps.

варианты объясняются здесь использовать LocalStorage вместо куки, а также есть способ заставить его работать в веб-просмотрах (file:// URLs). Поэтому вместо того, чтобы использовать код, который я предложил ранее, вы можете просто сделать это:

// 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');
previous answer content :

Решение pokki, предложенное Алексом, работает нормально с некоторыми изменениями, чтобы убрать необходимость в Pokki.

Я создал проект git для этой очищенной версии здесь:

https://github.com/ggendre/GALocalStorage

Отлично работает на Android 4.1 и IOS6, я буду тестировать больше устройств очень скоро. Надеюсь это поможет ! :)

 29 янв. 2013 г., 21:19
Знаете ли вы, есть ли способ соотнести размер экрана / разрешение с этим? Отслеживаются имена мобильных устройств, но не размер экрана.
 14 февр. 2017 г., 11:14
Я разместил обновленный ответ ниже, я считаю, что это решение больше не является лучшим.
 15 янв. 2013 г., 05:18
Кажется, это отлично работает! Знаете ли вы, какую поддержку он имеет более старые версии Android / iOS?
 08 июл. 2018 г., 22:11
После 3-х дней работы с Google-аналитическими плагинами Cordova (все плагины ... серьезно), и мое приложение зависало при запуске после их установки. Я снова попытался использовать веб-метод. Это работало как волшебство. Спасибо, Гийом. Отличное решение !!
 18 янв. 2013 г., 16:26
Мы протестировали, и он прекрасно работает с Android 2.1 до 4.1. У меня нет устройства ниже 2.1, поэтому я не могу проверить его на более старом, чем это. с ios 3.2 все в порядке с ios6.

и больше нет необходимости редактировать analytics.js, а также библиотеку или плагин, или, по крайней мере, я в них не нуждался. Многие вещи, которые были сказаны в прошлые годы, устарели или просто устарели, так что вот мое последнее всеобъемлющее руководство.

1. The config.xml file

В вашем config.xml вы должны разрешить межсайтовый запрос:

<access origin="https://www.google-analytics.com" />

2. The HTML

В метатеге CSP, если вы выберете его, вы также должны разрешать звонки в Google. Это может выглядеть так:

<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. The javascript

Вот закомментированный код для веб-приложения, которое может работать как в браузере, так и в упакованном приложении Cordova. Вы можете игнорироватьelse заблокировать, если вы не заботитесь о браузере.

// 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. Your GA account

To monitor the traffic of the mobile app, create a view of the App type.

Если вам не нужно отслеживать трафик вашего веб-приложения с веб-сайта, вы можете прекратить читать здесь, в противном случае читать дальше. Я предполагаю, что вы используете одну учетную запись для отслеживания как веб-сайта, так и приложения.

Apply the custom filter named "Application? => yes" on the created view so that it will only show the screenview hits. There is an official guide here Then, to track the traffic from the website, create a second view of the Website type. Apply a custom filter "Application? => no" on it. If you want a merged view of your traffic online and in-app, create a third view of the App type. By default (without filter), it will show all data.

Additional notes

Everything goes over https now, no need for the http protocol anymore in your <access> and CSP Be aware that writing *.google-analytics.com in the CSP would not work. Although that policy works in Chrome (56), it doesn't in Cordova (5.6.0) Google analytics does not require any application permissions like ACCESS_NETWORK_STATE or ACCESS_WIFI_STATE like I've read elsewhere All of this was tested with an Android app (I expect it to work in iOS apps as well), with the Crosswalk plugin installed
 23 февр. 2017 г., 10:25
Это помогло мне заставить реакцию работать на iOS / Android. Основное изменение, которое я внес: ReactGA.set ({checkProtocolTask: null, checkStorageTask: null}); Спасибо за ваше великолепное объяснение.
 30 окт. 2017 г., 06:28
Спасибо. Извините, я спросил это неправильно. На сайте Google, который я видел, & quot; библиотека gtag.js является рекомендуемым кодом отслеживания для новых реализаций. Однако могут быть случаи, когда вы предпочитаете использовать analytics.js & quot; и я также добавляю менеджер тегов Google по ссылкам ниже. Так что я убедился, что они вместе с вашим кодом будут работать и в мобильном приложении phonegap.developers.google.com/analytics/devguides/collection/gtagjs/… support.google.com/tagmanager/answer/6102821?authuser=1 support.google.com/analytics/answer/7538414?authuser=1
 24 окт. 2017 г., 13:51
Официальная документация гласит: «ga.js - это устаревшая библиотека. Если вы начинаете новую реализацию, мы рекомендуем вам использовать последнюю версию этой библиотеки analytics.js & quot ;. Я не пробовал с ga.js.
 28 февр. 2017 г., 02:37
Работал красиво для меня! Это должно быть принятым решением.
 24 окт. 2017 г., 08:50
спасибо за этот ответ. Согласно последнему обновлению Google Analytics, нам нужно использовать ga.js, а не analytics.js. Отличается ли это решение от такого подхода? У меня уже есть код веб-сайта, который ссылается на ga.js согласно коду и описанию, предложенному Google Analytics Help. Что ты предлагаешь?

Ваш ответ на вопрос