Когда будет вызван InstanceIDListenerService и как его проверить?
С последними изменениями в Android GCM теперь предоставляется InstanceIDListenerService, чтобы прослушивать обновления токенов, переопределяя метод onTokenRefresh.
Но когда будет вызван этот метод? И есть ли способ проверить его вручную?
Ответ 1
Чтобы проверить его вручную из командной строки:
adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n your.package.name/your.own.MyInstanceIDListenerService
где:
Ваш пакет приложений - your.package.name
Имя класса вашей реализации InstanceIDListenerService - это your.own.MyInstanceIDListenerService
Это отправит намерение службе с дополнительными функциями, ожидаемыми базовым классом.
Для этого для работы службы необходимо установить exported временно:
Примечание. это должно выполнять только временно и никогда не экспортироваться в производство, иначе другие приложения могут получить доступ к вашей службе.
Ответ 2
onTokenRefresh() будет вызываться, если токен для вашего приложения был обновлен службой идентификатора экземпляра. Основная причина вызова onTokenRefresh() - разрешить вам обновлять ваш сервер приложений новым токеном, чтобы он мог отправлять сообщения в ваше приложение.
Вам не нужно проверять значение маркера вручную. Маркер используется главным образом вашим сервером приложений для отправки сообщений в ваше приложение. Таким образом, при первом запуске приложения вы должны вызвать InstanceID.getToken() и отправить токен на свой сервер. Затем, если токен обновлен, вы снова вызываете InstanceID.getToken() и снова отправляете новое значение на ваш сервер.