Google Analytics не отправляет событие до setAppOptOut(true)

Я пытаюсь отправить событие непосредственно перед отключением аналитики Google в Android. Но событие не отображается на консоли GA в реальном времени.

    tracker.send(new HitBuilders.EventBuilder()
                    .setCategory(category)
                    .setAction(action)
                    .setLabel(label)
                    .build());
    //disable GA
    GoogleAnalytics.getInstance(this).setAppOptOut(true);

Спасибо за любой совет.

1 ответ

Решение

Если вы включите ведение журнала Google Analytics, вы увидите, что при вызове setAppOptOut(true) Google Analytics удалит все попадания в очередь с момента последней отправки обращений на серверы Google Analytics:

V/GAV4﹕ Thread[GAThread,5,main]: clearHits called

Как вы заметили себя dispatchLocalHits() не помогает, поскольку ничего не делает с установленными сервисами Google Play. Что вам нужно сделать, это ждать звонка setAppOptOut(true) до тех пор, пока ваши хиты не будут отправлены. Однако, поскольку вы не знаете, когда отправляются хиты, это сделать нелегко.

Вы можете указать период отправки вашего приложения с помощью ga_dispatchPeriod настройка (по умолчанию 30 минут). Если вы ждете дольше, чем настроенный период отправки, вы должны быть абсолютно уверены, что ваше событие было отправлено, однако это не гарантируется, поскольку GA может ожидать отправки данных еще дольше, если у вас нет сетевого подключения в данный момент.

Если вы выберете такой подход, вы должны убедиться, что ожидание работает между сеансами, поскольку сервисы Google Play являются отдельной услугой на устройстве и будут удерживать ваши хиты, даже если вы перезапустите свое приложение. Так что отказ от следующего запуска вашего приложения также не будет работать.

Однако ожидание отказа более 30 минут может быть не очень приятным для ваших пользователей, поскольку это дает много времени для сбора и отправки данных после того, как пользователь решит, что они отказались.

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

Таким образом, вы можете быть уверены, что ваше окончательное событие будет отправлено в Google Analytics, а больше событий не будет отправлено после этого, даже если вы не звоните setAppOptOut(true),

Обратите внимание, что это работает только в том случае, если вы не полагаетесь на какое-либо автоматическое отслеживание, такое как автоматическое создание отчетов о неперехваченных исключениях или автоматическое измерение экрана.

Другие вопросы по тегам