Espero que todos ustedes conozcan esta clase, utilizada para obtener el token de notificación cada vez que se actualiza el token de notificación de Firebase. Obtenemos el token actualizado de esta clase, del siguiente método.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Para usar esto como quiero implementar FCM, extendí MyClass desde FirebaseInstanceIdService
Pero, mostrando que FirebaseInstanceIdService está en desuso
¿Alguien sabe esto? ¿Qué método o clase debo usar en lugar de esto para obtener un token actualizado ya que está en desuso?
Estoy usando : implementation 'com.google.firebase:firebase-messaging:17.1.0'
Verifiqué el documento para saber que no hay nada mencionado sobre esto. : DOCUMENTO DE CONFIGURACIÓN DEL FCM
ACTUALIZAR
El problema ha sido resuelto.
Como Google desaprobó el FirebaseInstanceService,
Hice la pregunta para encontrar el camino y sé que podemos obtener el token de FirebaseMessagingService ,
Como antes, cuando pregunté, los Documentos de preguntas no se actualizaron, pero ahora los documentos de Google se actualizaron para obtener más información. Consulte este documento de Google: FirebaseMessagingService
ANTIGUO De: FirebaseInstanceService (en desuso)
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
NUEVO de: FirebaseMessagingService
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d("NEW_TOKEN",s);
}
Gracias.
fuente

super.onNewToken(s);? (No veo que se llame en firebase.google.com/docs/cloud-messaging/android/client .)Respuestas:
bombero aquí
Consulte la documentación de referencia para
FirebaseInstanceIdService:Por extraño que parezca, el JavaDoc
FirebaseMessagingServiceaún no menciona elonNewTokenmétodo. Parece que todavía no se ha publicado toda la documentación actualizada. He presentado un problema interno para obtener las actualizaciones de los documentos de referencia publicados, y también para actualizar las muestras en la guía.Mientras tanto, tanto las llamadas antiguas / en desuso como las nuevas deberían funcionar. Si tiene problemas con cualquiera de ellos, publique el código y lo echaré un vistazo.
fuente
Sí
FirebaseInstanceIdServiceestá en desusoNo es necesario utilizar el
FirebaseInstanceIdServiceservicio para obtener el token FCM. Puede eliminar elFirebaseInstanceIdServiceservicio de forma seguraAhora tenemos que
@Override onNewTokenconseguirTokenenFirebaseMessagingServiceCÓDIGO DE MUESTRA
EDITAR
cómo obtener un token en tu actividad
Ahora necesitamos usar
getInstanceId ()para generar tokengetInstanceId ()Devuelve elIDtoken generado automáticamente para esteFirebaseproyecto.Esto genera una ID de instancia si aún no existe, que comienza a enviar información periódicamente al back-end de Firebase.
Devoluciones
InstanceIdResultcual contiene elIDytoken.CÓDIGO DE MUESTRA
EDITAR 2
Aquí está el código de trabajo para kotlin
fuente
Y esto:
supongamos que es la solución de obsoleto:
EDITAR
FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()puede producir una excepción si la tarea aún no se ha completado, por lo que el método que describió Nilesh Rathod (con.addOnSuccessListener) es la forma correcta de hacerlo.Kotlin:
fuente
Kotlin permite un código aún más simple que el que se muestra en otras respuestas.
Para obtener el nuevo token cada vez que se actualiza:
Para obtener el token desde cualquier lugar en tiempo de ejecución:
fuente
FirebaseinstanceIdServicees obsoleto. Entonces tengo que usar "FirebaseMessagingService"Sea la imagen por favor:
fuente
En KOTLIN: - Si desea guardar el token en la base de datos o las preferencias compartidas, anule onNewToken en FirebaseMessagingService
Obtenga el token en tiempo de ejecución, use
fuente
override fun onNewToken(token: String)(sin el signo de interrogación).Clase de implementación de FCM:
Y llame a initialize en Activity o APP:
AndroidManifest.xml:
** Si agregó "INSTANCE_ID_EVENT" no recuerde deshabilitarlo.
fuente
Tienes que usar en
FirebaseMessagingService()lugar deFirebaseInstanceIdServicefuente