Google Analytics для Android с использованием нескольких действий - PullRequest
3 голосов
/ 06 октября 2010

Я пытаюсь интегрировать Google Analytics в свой проект Android, используя информацию на веб-сайте соответствующего SDK . Однако документации очень мало. В моем проекте есть 6 различных действий, и я заметил, что использование метода на веб-сайте приводит к уникальному посещению в Google Analytics для каждого открываемого действия, даже если оно все еще находится в том же сеансе. По-видимому, Google Analytics для Android никогда не использует ранее использованный сеанс.

Их метод состоит в том, чтобы начать отслеживание активности в onCreate, а затем остановить отслеживание в onDestroy. Проблема, с которой я столкнулся, заключается в том, что сеанс будет оставаться активным, если пользователь нажмет кнопку «Домой» вместо кнопки «Назад», поскольку действие не будет уничтожено. Поэтому вместо этого я решил сделать это в onResume и onPause, но это означает, что новые сессии открываются при открытии новой операции.

Кто-нибудь знает, как реально отследить один сеанс по нескольким действиям?

Ответы [ 2 ]

3 голосов
/ 06 октября 2010

Изучив жизненный цикл действия, я пришел к следующему выводу:

При переключении из действия A в другое действие B метод onStop для A называется ПОСЛЕ метода onStart для B. ЧтоЗатем я увеличивал счетчик ссылок при каждом обращении к (статическому) трекеру в методе onStart.В методе onStop я сначала проверил, был ли счетчик ссылок равен 0, и остановил бы трекер, если он был.В конце метода onStop я бы уменьшил счетчик ссылок.

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

2 голосов
/ 15 сентября 2011

Повторяю ответ, который я разместил здесь: Google Analytics в приложении для Android - работа с несколькими видами деятельности

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

Связанная служба будет действовать только до тех пор, пока с ней связаны действия. Все действия в моем приложении привязаны к этому сервису, поэтому он длится только до тех пор, пока пользователь активно использует мое приложение - поэтому это настоящая «сессия».

Я запускаю трекер с единичным экземпляром Application, который я расширил, и добавил статический метод getInstance () для получения экземпляра:

// Non-relevant code removed

public IBinder onBind(Intent intent) {
    tracker = GoogleAnalyticsTracker.getInstance();
    tracker.startNewSession(PROPERTY_ID, MyApp.getInstance());
}


public boolean onUnbind(Intent intent) {
    tracker.stopSession();
}

См .: http://developer.android.com/guide/topics/fundamentals/bound-services.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...