Подтвердить что ты не робот

Когда будет вызван InstanceIDListenerService и как его проверить?

С последними изменениями в Android GCM теперь предоставляется InstanceIDListenerService, чтобы прослушивать обновления токенов, переопределяя метод onTokenRefresh.

Но когда будет вызван этот метод? И есть ли способ проверить его вручную?

4b9b3361

Ответ 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 временно:

<service
    android:name="your.own.MyInstanceIDListenerService"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
    </intent-filter>
</service>

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

Ответ 2

onTokenRefresh() будет вызываться, если токен для вашего приложения был обновлен службой идентификатора экземпляра. Основная причина вызова onTokenRefresh() - разрешить вам обновлять ваш сервер приложений новым токеном, чтобы он мог отправлять сообщения в ваше приложение.

Вам не нужно проверять значение маркера вручную. Маркер используется главным образом вашим сервером приложений для отправки сообщений в ваше приложение. Таким образом, при первом запуске приложения вы должны вызвать InstanceID.getToken() и отправить токен на свой сервер. Затем, если токен обновлен, вы снова вызываете InstanceID.getToken() и снова отправляете новое значение на ваш сервер.

Проверьте здесь пример.