Se utilizzi le API FCM per creare richieste di invio a livello di programmazione, potresti scoprire che, nel tempo, stai sprecando risorse inviando messaggi a dispositivi inattivi con token di registrazione obsoleti. Questa situazione può influire sui dati di recapito dei messaggi segnalati nella console Firebase o sui dati esportati in BigQuery, mostrando un drastico (ma non effettivamente valido) calo dei tassi di recapito. Questa guida illustra alcune misure che puoi adottare per garantire un targeting efficiente dei messaggi e rapporti di recapito validi.
Best practice di base
Esistono alcune pratiche fondamentali da seguire in qualsiasi app che utilizza le API FCM per creare richieste di invio a livello di codice. Le principali best practice sono:
- Memorizza i token di registrazione sul tuo server. Un ruolo importante per il server è tenere traccia del token di ciascun client e mantenere un elenco aggiornato dei token attivi. Ti consigliamo vivamente di implementare un timestamp del token nel tuo codice e nei tuoi server e di aggiornare questo timestamp a intervalli regolari.
- Rimuovi i token archiviati che diventano obsoleti . Oltre a rimuovere i token in casi ovvi di risposte di token non valide, probabilmente dovrai monitorare altri segnali che indicano che il token è obsoleto. Questa guida discute alcune delle tue opzioni per raggiungere questo obiettivo.
Recupera e archivia i token di registrazione
All'avvio iniziale della tua app, FCM SDK genera un token di registrazione per l'istanza dell'app client. Questo è il token che devi includere nelle richieste di invio mirate dall'API o aggiungere alle sottoscrizioni agli argomenti per il targeting degli argomenti.
Come indicato nelle nostre guide alla configurazione del client, la tua app dovrebbe recuperare questo token all'avvio iniziale e salvarlo sul tuo server dell'app insieme a un timestamp . Questo timestamp deve essere implementato dal tuo codice e dai tuoi server, poiché non ti viene fornito dagli SDK di FCM.
Inoltre, è importante salvare il token sul server e aggiornare il timestamp ogni volta che cambia, ad esempio quando:
- L'app viene ripristinata su un nuovo dispositivo
- L'utente disinstalla/reinstalla l'app
- L'utente cancella i dati dell'app.
Rileva risposte token non valide dal backend FCM
Assicurati di rilevare risposte di token non valide da FCM e rispondi eliminando dal tuo sistema tutti i token di registrazione noti per non essere validi. Con l'API HTTP v1, questi messaggi di errore possono indicare che la tua richiesta di invio ha come target token obsoleti o non validi:
-
UNREGISTERED
(HTTP 404) -
INVALID_ARGUMENT
(HTTP 400)
Vedere ErrorCodes per ulteriori informazioni.
Se ricevi una di queste risposte per un token mirato, è sicuro eliminare il tuo record di questo token, poiché non sarà mai più valido. Tuttavia, tieni presente che ci saranno ancora casi in cui un token non è effettivamente valido, ma non vi è alcuna indicazione al riguardo. Ad esempio, a volte il backend FCM non è in grado di verificare se un dispositivo è andato offline in modo permanente.
Garantire la freschezza del token di registrazione
Determinare se un token è fresco o scaduto non è sempre semplice. Per coprire tutti i casi, dovresti adottare una soglia per quando consideri i token obsoleti; la nostra raccomandazione è di due mesi. È probabile che qualsiasi token più vecchio di due mesi sia un dispositivo inattivo; un dispositivo attivo avrebbe altrimenti aggiornato il proprio token.
Aggiorna i token regolarmente
Ti consigliamo di recuperare e aggiornare periodicamente tutti i token di registrazione sul tuo server. Ciò richiede di:
- Aggiungi la logica dell'app nella tua app client per recuperare il token corrente utilizzando la chiamata API appropriata (come
token(completion):
per piattaforme Apple ogetToken()
per Android) e quindi invia il token corrente al tuo server dell'app per l'archiviazione (con timestamp ). Questo potrebbe essere un lavoro mensile configurato per coprire tutti i client/token. - Aggiungi la logica del server per aggiornare il timestamp del token a intervalli regolari, indipendentemente dal fatto che il token sia cambiato o meno.
Qualunque sia il modello di temporizzazione che segui, assicurati di aggiornare periodicamente i token. Una frequenza di aggiornamento di una volta al mese probabilmente raggiunge un buon equilibrio tra l'impatto della batteria e il rilevamento di token di registrazione inattivi. Eseguendo questo aggiornamento, ti assicuri anche che qualsiasi dispositivo che diventa inattivo aggiornerà la sua registrazione quando sarà nuovamente attivo. Non vi è alcun vantaggio nell'effettuare l'aggiornamento più frequentemente rispetto a settimanalmente.
Annulla l'iscrizione dei token obsoleti dagli argomenti
La gestione degli abbonamenti agli argomenti per rimuovere i token di registrazione obsoleti è un'altra considerazione. Prevede due passaggi:
- La tua app dovrebbe iscriversi nuovamente agli argomenti una volta al mese e/o ogni volta che il token di registrazione cambia. Ciò costituisce una soluzione autoriparante, in cui gli abbonamenti riappaiono automaticamente quando un'app diventa nuovamente attiva.
- Se un'istanza dell'app è inattiva per 2 mesi (o per la tua finestra di obsolescenza), devi annullare l'iscrizione agli argomenti utilizzando l' SDK Firebase Admin per eliminare la mappatura token/argomento dal back-end FCM.
Il vantaggio di questi due passaggi è che i tuoi fanout si verificheranno più velocemente poiché ci sono meno token non aggiornati su cui eseguire il fanout e le tue istanze di app obsolete si iscriveranno automaticamente di nuovo una volta che saranno nuovamente attive.
Misurare il successo della consegna
In generale, consigliamo di indirizzare i messaggi in base alle azioni osservate o acquisite dalle istanze dell'app utilizzate attivamente. Ciò è particolarmente importante se invii regolarmente messaggi ad argomenti con un gran numero di iscritti; se una parte di questi abbonati è effettivamente inattiva, l'impatto sulle statistiche di consegna può essere significativo nel tempo.
Prima di indirizzare i messaggi a un token, considera:
- Google Analytics, i dati acquisiti in BigQuery o altri indicatori di tracciamento indicano che il token è attivo?
- I precedenti tentativi di consegna sono falliti costantemente per un periodo di tempo?
- Il token di registrazione è stato aggiornato sui tuoi server negli ultimi due mesi?
- Per i dispositivi Android, l' API dei dati FCM riporta un'alta percentuale di errori di recapito dei messaggi dovuti a
droppedDeviceInactive
?
Per ulteriori informazioni sulla consegna, vedere Informazioni sulla consegna dei messaggi .