Phonegap Google Analytics не отслеживает вообще

Этот файл main.js

/* Google Analytics */
(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + 
      '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
var _gaq = _gaq || [];

function _track(page){
    try {
        _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']); /* But with my correct one */
        console.log('google analytics:' + page);
        if (page != '') {
            _gaq.push(['_trackPageview', 'Mobile: '+page]);
        } else {
            _gaq.push(['_trackPageview'],'Mobile');
        }
    } catch(err) {
        console.log(err);
    }
}

Итак, в любое время я хочу отслеживать любую страницу, которую я использую:

_track('/top-rated/');

И я вижу этот журнал:

google analytics: /top-rated/

Но я не могу просмотреть журнал на странице Google Analytics в режиме реального времени

Кстати, у меня в файле config.xml

<access origin=".*"/>

Ответ 1

Причина, по которой GA не работает на устройстве, заключается в том, что Google Analytics ожидает, что протокол будет HTTP или HTTPS, но при загрузке приложения протокол является файлом:///, поскольку вы открываете файл с устройства в WebView.

В таком случае GA не позволяет сохранять файлы cookie и выключается. Также есть новая версия ga.js, называемая analytics.js(также называемая Universal Analytics), которая в основном представляет собой расширенную версию. Вы можете найти разницу между версиями здесь - http://www.cardinalpath.com/which-version-of-google-analytics-is-right-for-you-determine-whether-you-should-upgrade-to-universal-analytics/

Если вы хотите продолжить использовать ga.js, вы можете использовать это -
https://github.com/ggendre/GALocalStorage
Это проект GitHub, который разрешает проблему с файлом:///.

Если вы хотите использовать Universal Analytics, вы можете использовать это -
http://www.blastam.com/blog/index.php/2013/07/ga-universal-analytics-phonegap-mobile-apps/
Это руководство, чтобы сделать его совместимым с Phonegap

Ответ 2

С помощью Phonegap вы открываете с URI файла и обычно устанавливаете для свойства origin значение null, хотя это зависит от браузера. Это свойство необходимо указать для большинства веб-серверов, чтобы принять запрос, учитывая тот факт, что он возник из запроса AJAX, как в этом случае. Это также может быть проблемой для файлов cookie, что, вероятно, является проблемой.

В этом случае этот URL-адрес будет работать: https://github.com/ggendre/GALocalStorage. Чтобы заставить его работать, вы должны включить localstorage для Phonegap.

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

Чтобы преодолеть этот фактор, вы можете настроить веб-службу и изменить все веб-запросы в Google Analytics, чтобы указать на свой сервер, и вы можете проксировать эти запросы обратно на серверы Google, чтобы преодолеть эту проблему.

На вашем сервере вам необходимо установить это свойство, чтобы получить доступ из Phonegap:

 Access-Control-Allow-Origin: *

Вы можете использовать что-то вроде Node.JS и node -http-proxy, доступное из диспетчера пакетов NPM, что должно быть легко, учитывая, что это все javascript. После этого вам просто нужно преобразовать все ссылки на Домен Google Analytics, чтобы указать на свой веб-сервер внутри локальной копии файла Google Analytics.

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

Если вы хотите большей ясности, не стесняйтесь сообщать мне. Я мог бы быть занят во время Дня Благодарения, но я постараюсь проверить как можно больше.