notification google gcm_defaultsenderid gcm firebaseinstanceidservice fcm change google-cloud-messaging token

google cloud messaging - google - ¿Cuándo se llamará a InstanceIDListenerService y cómo probarlo?



push notifications android (2)

Con los últimos cambios en Android GCM ahora se proporciona un InstanceIDListenerService para poder escuchar las actualizaciones de token anulando el método onTokenRefresh.

¿Pero cuándo se llamará este método? ¿Y hay alguna forma de probarlo manualmente?


Para probarlo manualmente desde la línea de comando, ejecuta:

adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n your.package.name/your.own.MyInstanceIDListenerService

dónde:

  • El paquete de su aplicación es your.package.name
  • El nombre de clase de su implementación InstanceIDListenerService es su.own.MyInstanceIDListenerService

Esto enviará una intención al servicio con los extras esperados por la clase base.

Para que esto funcione, el servicio debe configurarse para exported temporalmente :

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

Nota: esto solo debe hacerse de forma temporal y nunca se debe exportar en producción, de lo contrario, otras aplicaciones podrían acceder a su servicio.


onTokenRefresh () se invocará si el token de su aplicación ha sido actualizado por el servicio de ID de instancia. La razón principal por la que se llama a onTokenRefresh () es permitirle actualizar su servidor de aplicaciones con el nuevo token para que pueda enviar mensajes a su aplicación.

No debería tener que probar el valor del token de forma manual. El token es utilizado principalmente por su servidor de aplicaciones para enviar mensajes a su aplicación. Por lo tanto, cuando la aplicación se ejecuta por primera vez, debe llamar a InstanceID.getToken () y enviar el token a su servidor. Luego, más tarde, si se actualiza el token, vuelva a llamar a InstanceID.getToken () y envíe el nuevo valor a su servidor nuevamente.

Mira aquí para ver un example .