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
FirebaseMessagingService
aún no menciona elonNewToken
mé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í
FirebaseInstanceIdService
está en desusoNo es necesario utilizar el
FirebaseInstanceIdService
servicio para obtener el token FCM. Puede eliminar elFirebaseInstanceIdService
servicio de forma seguraAhora tenemos que
@Override onNewToken
conseguirToken
enFirebaseMessagingService
CÓDIGO DE MUESTRA
EDITAR
cómo obtener un token en tu actividad
Ahora necesitamos usar
getInstanceId ()
para generar tokengetInstanceId ()
Devuelve elID
token generado automáticamente para esteFirebase
proyecto.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
InstanceIdResult
cual contiene elID
ytoken
.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
FirebaseinstanceIdService
es 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 deFirebaseInstanceIdService
fuente