registro - token android studio
¿Qué es el token FCM en Firebase? (5)
Aquí hay pasos simples para agregar este gradle:
dependencies {
compile "com.google.firebase:firebase-messaging:9.0.0"
}
No se necesitan permisos adicionales en manifiesto como GCM.
No se necesita receptor para manifestarse como GCM.
Con FCM,
com.google.android.gms.gcm.GcmReceiver
se agrega automáticamente.
Migra tu servicio de escucha
Ahora se requiere un servicio que extienda
InstanceIDListenerService
solo si desea acceder al token FCM.
Esto es necesario si quieres
- Administrar tokens de dispositivo para enviar mensajes a un solo dispositivo directamente, o Enviar mensajes a un grupo de dispositivos, o
- Enviar mensajes al grupo de dispositivos, o
- Suscriba dispositivos a temas con la API de administración de suscripción del servidor.
Agregar servicio en manifiesto
<service
android:name=".MyInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
Cambie
MyInstanceIDListenerService
para extender
FirebaseInstanceIdService
y actualice el código para escuchar las actualizaciones de token y obtener el token cada vez que se genera un nuevo token.
public class MyInstanceIDListenerService extends FirebaseInstanceIdService {
...
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is also called
* when the InstanceID token is initially generated, so this is where
* you retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// TODO: Implement this method to send any registration to your app''s servers.
sendRegistrationToServer(refreshedToken);
}
}
Para más información visite
En la nueva Firebase, en Notificación, han mencionado que el desarrollador puede enviar notificaciones a un dispositivo en particular. Para eso, en la consola pide un token FCM. ¿Qué es exactamente y cómo puedo obtener ese token?
Despreciaron el método getToken () en las notas de la versión a continuación. En cambio, tenemos que usar getInstanceId.
https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId
Task<InstanceIdResult> task = FirebaseInstanceId.getInstance().getInstanceId();
task.addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult authResult) {
// Task completed successfully
// ...
String fcmToken = authResult.getToken();
}
});
task.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
Para manejar el éxito y el fracaso en el mismo oyente, adjunte un OnCompleteListener:
task.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (task.isSuccessful()) {
// Task completed successfully
InstanceIdResult authResult = task.getResult();
String fcmToken = authResult.getToken();
} else {
// Task failed with an exception
Exception exception = task.getException();
}
}
});
Además, la clase FirebaseInstanceIdService está en desuso y se les ocurrió el método onNewToken en FireBaseMessagingService como reemplazo de onTokenRefresh,
puede consultar las notas de la versión aquí, https://firebase.google.com/support/release-notes/android
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Use this code logic to send the info to your server.
//sendRegistrationToServer(s);
}
FirebaseInstanceIdService ahora está en desuso. debe obtener el token en el método onNewToken en FirebaseMessagingService.
Tengo una actualización sobre el "token de mensajería en la nube de Firebase" de la que podría obtener información.
Realmente quería saber sobre ese cambio, así que solo envié un correo al equipo de Soporte. El token de Firebase Cloud Messaging volverá a la clave del servidor pronto nuevamente. No habrá nada que cambiar. Podemos ver la clave del servidor nuevamente después de poco.
¿Qué es exactamente?
Un token FCM, o comúnmente conocido como
registrationToken
como en
google-cloud-messaging
.
Como se describe en los
documentos de
GCM
FCM
:
Una identificación emitida por los servidores de conexión GCM a la aplicación cliente que le permite recibir mensajes. Tenga en cuenta que los tokens de registro deben mantenerse en secreto.
¿Cómo puedo obtener ese token?
Actualización
: el token aún se puede recuperar llamando a
getToken()
, sin embargo, según la última versión de FCM,
FirebaseInstanceIdService.onTokenRefresh()
ha sido reemplazado por
FirebaseMessagingService.onNewToken()
, que en mi experiencia
funciona de la misma manera que
onTokenRefresh()
hizo
.
Vieja respuesta:
Según los documentos de FCM :
En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente. Si desea apuntar a dispositivos individuales o crear grupos de dispositivos, deberá acceder a este token.
Puede acceder al valor del token extendiendo FirebaseInstanceIdService. Asegúrese de haber agregado el servicio a su manifiesto, luego llame a getToken en el contexto de onTokenRefresh y registre el valor como se muestra:
@Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: Implement this method to send any registration to your app''s servers. sendRegistrationToServer(refreshedToken); }
OnTokenRefreshcallback se dispara cada vez que se genera un nuevo token, por lo que llamar a getToken en su contexto garantiza que esté accediendo a un token de registro actual y disponible. FirebaseInstanceID.getToken () devuelve nulo si el token aún no se ha generado.
Una vez que haya obtenido el token, puede enviarlo a su servidor de aplicaciones y almacenarlo utilizando su método preferido. Consulte la referencia de la API de ID de instancia para obtener detalles completos sobre la API.