Impostare e gestire la priorità dei messaggi

Hai a disposizione due opzioni per assegnare la priorità di recapito ai messaggi downstream su Android: priorità normale e alta. La consegna dei messaggi con priorità normale e alta funziona come segue:

  • Priorità normale. Questa è la priorità predefinita per i messaggi di dati. I messaggi con priorità normale vengono recapitati immediatamente quando il dispositivo non è in modalità sospensione. Quando il dispositivo è in modalità Sospensione, la consegna potrebbe essere ritardata per risparmiare batteria fino a quando non viene disattivata. Per i messaggi meno urgenti, ad esempio le notifiche di nuove email, la sincronizzazione dell'interfaccia utente o la sincronizzazione dei dati delle app in background, scegli la priorità di recapito normale.

    Quando ricevi un messaggio di priorità normale su Android che richiede una sincronizzazione dei dati in background per la tua app, puoi pianificare un'attività con WorkManager per gestirla quando la rete è disponibile.

  • Priorità elevata. FCM tenta di inviare immediatamente i messaggi di alta priorità, consentendo a FCM di riattivare un dispositivo in sospensione se necessario ed eseguire alcune elaborazioni limitate (incluso l'accesso alla rete molto limitato). In genere, i messaggi con priorità elevata devono comportare l'interazione dell'utente con la tua app o le sue notifiche.

Gestione e assegnazione della priorità ai messaggi su Android

I messaggi con priorità elevata su Android sono destinati a contenuti visibili agli utenti e soggetti a scadenza e devono generare notifiche rivolte agli utenti. Se FCM rileva un pattern in cui i messaggi non generano notifiche rivolte agli utenti, i tuoi messaggi potrebbero essere riassegnati alla priorità normale o delegati per la gestione da parte di Google Play Services.

FCM utilizza un comportamento dei messaggi di 7 giorni per determinare se ridurre la priorità dei messaggi o eseguirne il proxy; effettua questa determinazione in modo indipendente per ogni istanza dell'applicazione. Se, in risposta ai messaggi con priorità elevata, le notifiche vengono visualizzate in modo visibile all'utente, i messaggi con priorità elevata futuri non saranno interessati.

Delega delle notifiche con Google Play Services

I messaggi di notifica con priorità elevata (non i messaggi di dati) che soddisfano determinati criteri vengono sottoposti a proxy da Google Play Services anziché essere riassegnati a una priorità inferiore. Ciò significa che le notifiche vengono visualizzate da Google Play Services per conto dell'app, senza che sia necessario avviarla. Questo viene fatto per offrire un'esperienza utente complessiva migliore sui dispositivi Android.

Tieni presente che i messaggi di notifica proxy introducono modifiche nella modalità di generazione dei report relativi ai messaggi ricevuti:

  • Affinché i dati di analisi per le notifiche proxy vengano registrati, la tua app deve utilizzare la versione 24.0.0 o successive dell'SDK FCM.
  • Potresti notare ritardi o cali nel numero di messaggi ricevuti rispetto al numero prima dell'introduzione delle notifiche inviate tramite proxy. Questo perché i dati e le analisi relativi alle notifiche proxy vengono registrati solo all'avvio dell'app e potrebbero non essere registrati affatto se la notifica non comporta l'apertura dell'app.

Il proxy dei messaggi di notifica in questo modo è il comportamento predefinito per le app che utilizzano Android Q e versioni successive di Google Play Services 19054000 o successive. I messaggi inviati tramite l'API HTTP v1 vengono sottoposti a proxy, ma i messaggi inviati tramite la console Firebase o le API legacy non verranno sottoposti a proxy. Tieni presente che questa funzionalità è attualmente in versione beta ed è soggetta a modifiche.

Sebbene sia vivamente consigliabile lasciare attiva la delega per i vantaggi che offre alla batteria e alla memoria del dispositivo, puoi disattivare questo comportamento in uno dei seguenti modi:

  • A livello di app: nel file manifest dell'app, aggiungi l'istruzione <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • Su base di istanza dell'app: per l'istanza dell'app, imposta fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> nel flusso dell'interfaccia utente per la tua app, a seconda del caso d'uso specifico.
  • Su base messaggio: imposta la chiave proxy su DENY nell'oggetto AndroidNotification per la richiesta di invio.

Misurare la riassegnazione della priorità dei messaggi su Android

  • Messaggi singoli. Al momento della consegna, puoi determinare se un singolo messaggio è stato deprioritizzato o meno confrontando la sua priorità di consegna, da getPriority(), con la sua priorità originale, da getOriginalPriority().

  • Tutti i messaggi. L'API FCM Aggregate Delivery Data può segnalare la percentuale di tutti i tuoi messaggi ad Android a cui viene ridotta la priorità. Alcuni messaggi potrebbero essere omessi dai report sui dati aggregati, ma, nel complesso, dovrebbero fornire una visione globale dei tassi di riassegnazione della priorità dei messaggi. Consulta il nostro articolo sui dati di pubblicazione aggregati per ulteriori informazioni e per il codice campione per eseguire query sull'API. Puoi consultarli anche tramite Explorer API.

  • Notifiche inviate al proxy. Le notifiche proxy non verranno conteggiate nelle attuali metriche di recapito di FCM o GA, pertanto potresti riscontrare un calo fino al 15% nelle metriche di recapito delle notifiche. Per generare report sui messaggi inviati tramite proxy, utilizza l'API FCM Aggregate Delivery Data. ProxyNotificationInsightPercents segnala la percentuale di notifiche di cui è stato eseguito il proxy e i dettagli dei messaggi che non è stato possibile eseguire il proxy.

Risoluzione dei problemi

  • Assicurati che le notifiche siano attive nell'istanza dell'app. Se l'utente ha disattivato l'autorizzazione di notifica per la tua app, nessuna delle tue notifiche verrà pubblicata e, di conseguenza, i tuoi messaggi verranno riassegnati a una priorità inferiore. Devi verificare che le notifiche siano abilitate prima di inviare messaggi ad alta priorità a un'istanza dell'applicazione.

  • Non chiamare a casa prima di pubblicare una notifica. Poiché una piccola parte della popolazione di dispositivi mobili Android utilizza reti con alta latenza, evita di aprire una connessione ai tuoi server prima di visualizzare una notifica. Richiamare il server prima della fine del tempo di elaborazione consentito può essere rischioso per gli utenti delle reti ad alta latenza. Includi invece i contenuti della notifica nel messaggio FCM e mostrali immediatamente. Se hai bisogno di eseguire la sincronizzazione per ulteriori contenuti in-app su Android, puoi pianificare un'attività con WorkManager per gestirla in background.