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