Google Analytics не работает из приложения cordova [duplicate]

Многие люди все еще пытаются найти способ закрыть браузер Chrome с помощью javascript. Следующий метод работает только тогда, когда вы используете Chrome в качестве запуска APP - киоск, например!

Я протестировал следующее:

Я использую следующее расширение: Закрыть киоск

Я следую инструкциям по использованию и, кажется, работает очень хорошо (убедитесь, что вы очищаете кеш при выполнении тестов). Используемый javascript (прикрепленный к событию клика):

window.location.href = '/closekiosk';

Надеюсь, что это поможет кому-то, поскольку это единственное работающее решение, которое я нашел.

Примечание. расширение работает в фоновом режиме и добавляет значок в Chrome. Он имеет следующий флажок: «Пусть Chrome работает в фоновом режиме» (или аналогичный текст). Возможно, вам придется играть с ним, пока он не сработает для вас. Я снял флажок, и теперь все работает отлично!

42
задан Mike 14 June 2012 в 06:02
поделиться

11 ответов

[edit] Google Analytics теперь работает с localstorage в гибридных приложениях.

Теперь у Google Analytics есть опции , описанные здесь , чтобы использовать LocalStorage вместо файлов cookie, а также взломать чтобы он работал в webviews (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');

содержимое предыдущего ответа:

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

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

https://github.com/ggendre/GALocalStorage

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

20
ответ дан Guillaume Gendre 18 August 2018 в 09:14
поделиться
  • 1
    Кажется, это отлично работает! Знаете ли вы, какая поддержка у него есть у старых версий Android / iOS? – OhmzTech 15 January 2013 в 06:18
  • 2
    Мы протестировали, и он отлично работает с Android 2.1 до 4.1. У меня нет устройства ниже 2.1, поэтому я не могу тестировать его старше. iOs в порядке от ios 3.2 до ios6. – Guillaume Gendre 18 January 2013 в 17:26
  • 3
    Знаете ли вы, есть ли способ отслеживать размер экрана / разрешение соответственно? Названия мобильных устройств отслеживаются, но не размер экрана. – OhmzTech 29 January 2013 в 22:19
  • 4
    Я опубликовал обновленный ответ ниже, я считаю, что это решение уже не самое лучшее. – Louis Ameline 14 February 2017 в 11:14
  • 5
    После 3-х дней тестирования Google-аналитических плагинов Кордовы (все плагины серьезно), и мое приложение врезалось при запуске после их установки. Я вернулся к попытке использовать веб-метод. Это работало как магия. Спасибо, Гийом. Удивительное решение! – iPzard 8 July 2018 в 20:11

ПРИМЕЧАНИЕ. Идентификатор клиентского трафика Google Analytics, созданный для мобильной платформы, поддерживает только IOS и Android. Если вы хотите отслеживать свою аналитику Google, убедитесь, что создали ее для веб-сайта. Только идентификатор отслеживания для работы на сайте с разрывом телефона во всех приложениях платформы. Затем вы можете просто загрузить GALocalStorage из нижней ссылки, а затем поместить его в папку js в папке www

www
 |__
    js
      |__
          GALocalStorage.js

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

https://github.com/ggendre/GALocalStorage

       <script>
        ga_storage._setAccount('UA-XXXXXXXX-X'); //Replace with your own
        ga_storage._trackPageview('Home Screen');
        </script>
0
ответ дан 9to5ios 18 August 2018 в 09:14
поделиться

Не работает для меня. Проблема в том, что код google использует файлы cookie, и он не работает с файлом: // urls.

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

2
ответ дан Alex 18 August 2018 в 09:14
поделиться
  • 1
    Здравствуй! спасибо за вашу ссылку, это отлично поработало с несколькими взломами, чтобы удалить покки. Я создал git repo здесь: github.com/ggendre/GALocalStorage – Guillaume Gendre 4 January 2013 в 11:35

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

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

0
ответ дан Community 18 August 2018 в 09:14
поделиться

Я внедрил библиотеку segment.io - analytics.js в приложении HTML5 / meteor.

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

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

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

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

1
ответ дан kate 18 August 2018 в 09:14
поделиться

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

1. Файл config.xml

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

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

2. 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. Javascript

Вот прокомментированный код для webapp, который может запускаться как в браузере, так и в комплекте с программой 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. Ваша учетная запись GA

  • Чтобы отслеживать трафик мобильного приложения, создайте представление типа App.

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

  • Применить настраиваемый фильтр с именем «Приложение? => Да» на созданном представлении, чтобы он был только показать хиты screenview. Существует официальное руководство здесь
  • Затем, чтобы отслеживать трафик с веб-сайта, создайте второй вид типа Website. Примените к нему специальный фильтр «Приложение? => Нет».
  • Если вы хотите, чтобы объединенное представление вашего трафика в сети и в приложении, создайте третий вид типа App. По умолчанию (без фильтра) он покажет все данные.

Дополнительные примечания

  • Теперь все идет по https, больше нет необходимости в протоколе http ваши <access> и CSP
  • Имейте в виду, что запись *.google-analytics.com в CSP не будет работать. Хотя эта политика работает в Chrome (56), это не в Кордове (5.6.0)
  • . Аналитика Google не требует каких-либо разрешений приложений, таких как ACCESS_NETWORK_STATE или ACCESS_WIFI_STATE, как я читал в другом месте
  • Все это было протестировано с помощью приложения для Android (я ожидаю, что он будет работать и в приложениях iOS), с установленным плагином Crosswalk
20
ответ дан Louis Ameline 18 August 2018 в 09:14
поделиться
  • 1
    Это помогло мне получить реакцию-ga для работы с ios / android. Основное изменение, которое я сделал: ReactGA.set ({checkProtocolTask: null, checkStorageTask: null}); Спасибо за ваше замечательное объяснение. – jarbot 23 February 2017 в 10:25
  • 2
    Работала красиво для меня! Это должно быть приемлемым решением. – Augustin Bralley 28 February 2017 в 02:37
  • 3
    спасибо за этот ответ. Согласно последнему обновлению Google Analytics, нам нужно использовать ga.js, а не analytics.js. Разве это решение отличается от этого подхода? У меня уже есть код сайта, который ссылается на ga.js в соответствии с кодом и описанием, предлагаемым с помощью Google Analytics. Что ты предлагаешь? – Jit 24 October 2017 в 06:50
  • 4
    В официальной документации говорится: «ga.js - это устаревшая библиотека. Если вы начинаете новую реализацию, мы рекомендуем использовать последнюю версию этой библиотеки analytics.js & quot ;. Я не пробовал с ga.js. – Louis Ameline 24 October 2017 в 11:51
  • 5
    спасибо. Простите, я спросил это неправильно. На сайте google, который я видел, «Библиотека gtag.js является рекомендуемым кодом отслеживания для новых реализаций. Однако могут быть случаи, когда вы предпочитаете использовать analytics.js & quot; и я также добавляю менеджер тегов google по ссылкам ниже. Так что убедитесь, что они вместе с вашим кодом будут работать и для мобильного приложения для мобильных телефонов. developers.google.com/analytics/devguides/collection/gtagjs/… support.google.com/tagmanager/answer/6102821?authuser=1 поддержка. google.com/analytics/answer/7538414?authuser=1 – Jit 30 October 2017 в 06:28

Просмотрите видео, чтобы увидеть его в действии:

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

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

Затем измените файл ga.js, добавив к нему один символ. Найдите файл ga.js для слова «файл:» и замените его на «_file:».

В потоке, который я связал выше, «TimW» объясняет причины этого:

По сути, Google Analytics не будет работать, если он используется из файла: /// url. В iOS / PhoneGap это так. Чтобы решить эту проблему, вы должны сначала скачать ga.js-файл из Google и включить его как часть вашей локальной сборки. Вы заметите, что этот файл обфускации. Найдите файл для строки «файл:», который должен появиться только один раз. Когда вы его найдете, добавьте подчеркивание к началу (так оно станет «_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

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

34
ответ дан Mike 18 August 2018 в 09:14
поделиться
  • 1
    Вы нашли решение проблемы не отслеживания вообще? В настоящее время я ищу полное решение, но пока не нашел хорошего. – Caimen 28 September 2012 в 21:03
  • 2
    Что произойдет, если нет подключения к Интернету? – tersakyan 7 October 2012 в 21:16
  • 3
    Нет подключения к интернету ... нет отслеживания: /, но когда вы думаете об этом, это довольно жутко, так или иначе, чтобы отслеживать вас, когда вы в автономном режиме. Немного слишком большой брат, если ты понимаешь, что я имею в виду. – Mike 7 October 2012 в 21:48
  • 4
    Кто-нибудь понял, почему это не работает в Android 4.0+? – drogon 19 November 2012 в 19:12
  • 5
    Я создал lib на основе реализации pokki GAPokki (с LocalStorage), и он отлично работает на android 4.0+, проверьте его в ответе ниже – Guillaume Gendre 4 January 2013 в 11:39

Я использовал приложение Ionic (на основе кордовы) в качестве мобильного сайта, и GA работала на него. Когда я отправил одно и то же приложение на родной ios, он перестал работать.

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

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

Проблема 2. Google по умолчанию прерывает запрос, если протокол страницы не является http или https. Чтобы исправить это

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

И вы должны быть установлены. Сделав эти изменения, я смог подтвердить события на GA. Надеюсь, это вам тоже поможет.

3
ответ дан Nirav Gandhi 18 August 2018 в 09:14
поделиться

Вы можете использовать библиотеку 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>

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

Вам нужно создать Website Account в Google analytics, чтобы использовать эту библиотеку

Library на GitHub

0
ответ дан RezaRahmati 18 August 2018 в 09:14
поделиться

этот плагин phonegap поможет интегрировать Google Analytics в приложение phonegap. Прочтите этот блог , чтобы узнать больше о том, как интегрировать аналитику Google в телефонную записях. вы также можете скачать рабочий демо-код из здесь .

1
ответ дан Shashi 18 August 2018 в 09:14
поделиться

Быстрое и грязное решение. Использование может использовать скрытый скрытый iframe:

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

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

0
ответ дан Teoman shipahi 18 August 2018 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: