Как остановить сеанс в 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();