notification - set up a firebase cloud messaging client app on android
Firebase Cloud Messaging-¿Cómo validar Tokens? (4)
Aquí hay un ejemplo de solicitud de enrollamiento que muestra cómo validar un token sin tener que enviar un mensaje:
curl -H "Content-Type: application/json" -H "Authorization: key=$FCM_API_KEY" https://fcm.googleapis.com/fcm/send -d ''{"registration_ids":["$FCMTOKEN"]}''
Ejemplo de respuesta inválida:
{"multicast_id":7452350602151058088,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
Ejemplo de respuesta válida:
{"multicast_id":9133870199216310277,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1502817580237626%f590ddc2f9fd7ecd"}]}
Obtuve esta respuesta del equipo de soporte de base de firebase de Google.
Estoy usando Firebase Cloud Messaging (FCM) y de acuerdo con el siguiente código abreviado cada vez que se genera un Token nuevo en el Dispositivo del Cliente ... Envío este nuevo TOKEN a mi SERVIDOR DB (Nube) donde lo guardo para poder para enviar futuras notificaciones push desde el servidor al dispositivo utilizando la API de CFM.
//public class CFMInstanceIDService extends FirebaseInstanceIdService ...
public void onTokenRefresh() {
...
String cfmToken = FirebaseInstanceId.getInstance().getToken();
...
sendRegistrationToServer(customerGuid, cfmToken);
}
Al hacer esto, tengo en el Servidor una lista de TODOS los dispositivos (múltiples) en los que un Cliente ha iniciado sesión. (Tableta, teléfono, iPhone, Android, etc.)
¿Hay alguna forma de verificar / validar un token en cualquier momento?
Me gustaría saber / asegurar que todos los tokens que he asociado a un Cliente pertenezcan a Dispositivos reales. No quiero enviar Notificaciones Push a Tokens no existentes.
En realidad hay una solución alternativa, puede usar dry_run = true
Este parámetro, cuando se establece en verdadero, permite a los desarrolladores probar una solicitud sin enviar un mensaje.
Si el usuario se da de baja, tiene una respuesta con NotRegistered
pero no se realizará el envío real
No existe tal cosa, la única información que puede obtener de un token es la información de la aplicación y si es válida o no
https://developers.google.com/instance-id/reference/server#get_information_about_app_instances
lo que debe hacer es observar la respuesta cuando va a enviar push''s out y si las claves ya no son válidas, la respuesta le indicará qué claves deben eliminarse con NotRegistered
No hay forma de validar si un token sigue siendo válido antes de enviar el mensaje posterior. Lo que debe hacer es verificar la respuesta después de enviar el mensaje y luego verificar si la respuesta contiene algún error.
Por ejemplo, si el servidor devuelve un 200 + error:NotRegistered
http no 200 + error:NotRegistered
, significa que un token de registro existente puede dejar de ser válido.
En la sección " Códigos de respuesta de error de mensaje descendente de FGC ", encontrará documentadas todas las respuestas de estado posibles.