2016-07-18 147 views
8

Sto usando Firebase Cloud Messaging (FCM) e come da codice abbreviato sotto ogni volta che un nuovo token viene generato sul dispositivo del cliente ... Invio questo nuovo TOKEN al mio SERVER DB (Cloud) dove lo salvo per essere in grado di inviare in futuro Notifica push dal server al dispositivo utilizzando l'API CFM.Firebase Cloud Messaging - Come convalidare i token?

//public class CFMInstanceIDService extends FirebaseInstanceIdService ... 

    public void onTokenRefresh() { 
     ... 
     String cfmToken = FirebaseInstanceId.getInstance().getToken();   
     ...  
     sendRegistrationToServer(customerGuid, cfmToken); 
    } 

In questo modo ho sul server un elenco di tutti (multipli) I dispositivi in ​​cui un cliente è loggato. (Tablet, telefono, iPhone, Android, ecc.)

C'è un modo per verificare/convalidare un token in qualsiasi momento?

Mi piacerebbe sapere/verificare che tutti i token che ho associato a un Cliente appartengano a Dispositivi reali. Non voglio inviare notifiche push a token non esistenti.

risposta

7

Nulla di tutto questo esiste, l'unica informazione che si può ottenere da un token è Informazioni applicazioni e non montone castrato è valido o meno

https://developers.google.com/instance-id/reference/server#get_information_about_app_instances

ciò che si dovrebbe fare è guardare per la risposta quando si andare per l'invio di spinta e se le chiavi non sono più valido la risposta vi dirà che cosa le chiavi devono essere eliminati con NotRegistered

https://firebase.google.com/docs/cloud-messaging/server

+1

Quando si utilizza l'endpoint id-ist è possibile verificare le informazioni di un token e la risposta indica (non specificatamente) che il token non è valido, perché non ci sono informazioni per il token o se il token non è valido formato. –

2

non c'è w ay per verificare se un token è ancora valido prima di inviare il messaggio downstream. Quello che devi fare è controllare la risposta dopo aver inviato il messaggio e poi controllare se la risposta contiene qualche errore.

Ad esempio, se il server restituisce un codice http 200 + error:NotRegistered, significa che un token di registrazione esistente può cessare di essere valido.

Nella sezione "Downstream message error response codes of FGC", troverete documentato ogni possibile risposta di stato.

3

Ecco una richiesta ricciolo esempio che mostra come convalidare un token senza la necessità di inviare un messaggio:

curl -H "Content-Type: application/json" -H "Authorization: key=$FCM_API_KEY" https://fcm.googleapis.com/fcm/send -d '{"registration_ids":["$FCMTOKEN"]}' 

Esempio risposta non valida:

{"multicast_id":7452350602151058088,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

valido esempio di risposta:

{"multicast_id":9133870199216310277,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1502817580237626%f590ddc2f9fd7ecd"}]} 

Ho ricevuto questa risposta dal team di supporto di Firebase di Google.