Как остановить сеанс в Google mobile analytics v2 для андроида без EasyTracker

Я прочитал документацию на веб-сайте GoogleAnalytics v2 (я в основном читал все страницы из https://developers.google.com/analytics/devguides/), но не был чтобы найти достаточно точный ответ на мой вопрос. Он либо отсутствует, либо смешан с документацией версии 1.

Я знаю, что с помощью EasyTracker вы можете установить параметр timeout_session. Но я не хочу использовать EasyTracker, и я хочу явно остановить сеанс в какой-то момент моего кода. (не устанавливает тайм-аут)

Я запускаю сеанс, когда открываю приложение:

mTracker.setStartSession(true);

и задавался вопросом, звонит ли

mTracker.setStartSession(false);

явно останавливает его.

Приветствуется любая помощь или указание на лучший учебник/документацию.

Ответ 1

В GA v3 для запуска или завершения сеанса вручную используйте параметр управления сеансом трекера следующим образом:

Запустите новый сеанс. Следующий хит этого трекера будет первым в новом сеансе.

[tracker set:kGAISessionControl value:@"start"];

Завершить сеанс. Следующий хит этого трекера будет последним в текущем сеансе.

[tracker set:kGAISessionControl value:@"end"];

Эта информация доступна по ссылке: https://developers.google.com/analytics/devguides/collection/ios/v3/sessions

Ответ 2

Обзор

Итак, я потратил некоторое время на Протокол измерений, а также просматривал журналы отладки в LogCat. Когда GA на вашем телефоне "отправляет" кучу хитов, каждый хит, похоже, имеет соответствующий HTTP-запрос в журнале, который начинается с:

GET /collect?...

за которым следует куча parameters, которые определяют тип хита (например, событие, социальная, электронная коммерция) и некоторые базовую информацию об этом приложении (например, идентификатор приложения, идентификатор отслеживания, временную метку).

Вот что я узнал:

setStartSession(false) не завершает сеанс.


Как я узнал об этом

Как я уже говорил, каждый хит представляет собой некоторый тип действия. Однако сеансы сеанса или окончания сеанса не считаются хитами. Это всего лишь дополнительные данные, которые добавляются к последнему хиту, который говорит GA о группировании будущих хитов в новом сеансе.

Итак, если вы sendEvent(...), а затем setStartSession(true), а затем dispatch(), вы увидите ОДИН хит в журналах, описывающих событие, с дополнительным параметром &sc=start, который описывает начало нового сеанса.

Затем я попытался сделать это, используя setStartSession(false), и я не заметил дополнительного параметра &sc. Это должно быть &sc=end, как описано здесь.


Потенциальный взлом

У трекера был метод send(...), который, похоже, позволит вам отправить пользовательский хит, указав необходимые параметры. После некоторых проб и ошибок, следующее успешно создало событие и присоединило параметр окончания сеанса, как описано выше.

Map<String, String> data;
data = EasyTracker.getTracker().constructEvent("Test", "Test", "Test", 0L);
data.put("sessionControl", "end");
EasyTracker.getTracker().send("event", data);

Итак, теоретически, каждый раз, когда вы хотите закончить сеанс, вы можете сделать фиктивное событие (например, выше), добавить параметр sessionControl и отправить. Из журналов кажется, что он работает отлично, но я не проверял это на панели инструментов GA.

И убедитесь, что вы отключили автоматическое управление сеансом, установив ga_sessionTimeout в -1 в файл analytics.xml.

Я также загрузил мой проект здесь, если вы хотите попробовать просмотреть журналы и сравнить их. Убедитесь, что вы обновили идентификатор отслеживания GA. Надеюсь, это поможет!

IlLXz.png


Мои журналы

Запустить сеанс + тестовое событие, отправка

GET /collect?ul=en-us&ev=0&ht=1362779137510&sr=720x1184&a=0&sc=start&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.sMC&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=2788&z=48 HTTP/1.1

Завершение сеанса + тестовое событие, отправка

GET /collect?ul=en-us&ev=0&ht=1362779233499&sr=720x1184&a=0&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.ssMMC&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=3726&z=50 HTTP/1.1

Завершение сеанса сеанса + тестовое событие, отправка

GET /collect?ul=en-us&ev=0&ht=1362779194381&sr=720x1184&a=0&sc=end&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.ssyL&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=3581&z=49 HTTP/1.1

Ответ 3

В GoogleAnalytics v2 у них есть новые способы запуска/остановки сеанса.

Я раньше не видел ваш код mTracker.setStartSession(true) и mTracker.setStartSession(false).

Теперь, если вы не хотите использовать методы EasyTracker, вы можете начать новый сеанс следующим образом:
mTracker.startNewSession("UA-xxxxxxx-x", 20, this);

Когда первый вход будет  (String uniqueGoogleAnalyticsKey, int autoDispatchTimer, Context this)

Чтобы остановить его: tracker.stopSession();