Impostare e gestire la priorità dei messaggi

Hai due opzioni per assegnare la priorità di recapito ai messaggi a valle su Android: 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, l'invio potrebbe essere ritardato per risparmiare batteria finché il dispositivo non esce dalla modalità Sospensione. Per i messaggi meno urgenti, come le notifiche di nuove email, il mantenimento della sincronizzazione dell'interfaccia utente o la sincronizzazione dei dati dell'app in background, scegli la priorità di invio normale.

    Quando ricevi un messaggio con 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 riassegnazione della priorità dei 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 delegazioni per la gestione da parte di Google Play Services.

FCM utilizza 7 giorni di comportamento dei messaggi per determinare se dare la priorità o eseguire il proxy dei messaggi. Questa determinazione viene eseguita in modo indipendente per ogni istanza della tua 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 precedente all'introduzione delle notifiche con 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: aggiungi la direttiva <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/> al file manifest dell'app.
  • 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'FCMAPI Aggregate Delivery Data può segnalare la percentuale di tutti i messaggi inviati ad Android di cui viene ridotto il 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 importazione aggregati per ulteriori informazioni e codice di esempio per eseguire query sull'API. Puoi anche esplorare l'esploratore 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 i report sui messaggi proxy, utilizza l'API FCMAggregate Delivery Data. ProxyNotificationInsightPercents riporta la percentuale di notifiche proxy correttamente eseguite, nonché i dettagli dei messaggi di cui 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. Prima di inviare messaggi con priorità elevata a un'istanza dell'applicazione, devi verificare che le notifiche siano attive.

  • 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. La chiamata al server prima del termine del tempo di elaborazione consentito potrebbe essere rischiosa per gli utenti su reti con elevata latenza. Includi invece i contenuti della notifica nel messaggio FCM e mostrali immediatamente. Se devi eseguire la sincronizzazione per ulteriori contenuti in-app su Android, puoi pianificare un'attività con WorkManager per gestirla in background.