Impostare e gestire la priorità dei messaggi

Hai due opzioni per assegnare la priorità di consegna ai messaggi downstream su Android: priorità normale e alta. La consegna dei messaggi con priorità normale e alta funziona nel seguente modo:

  • Priorità normale. Questa è la priorità predefinita per i messaggi di dati e notifiche. I messaggi con priorità normale vengono recapitati immediatamente quando il dispositivo non è in modalità Sospensione. Quando il dispositivo è in modalità Doze, la consegna potrebbe essere ritardata per risparmiare batteria finché il dispositivo non esce dalla modalità Doze. 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 distribuzione normale.

  • Priorità alta.FCM tenta di inviare immediatamente i messaggi con priorità alta, consentendo a FCM di riattivare un dispositivo inattivo quando necessario e di eseguire un'elaborazione limitata (incluso l'accesso alla rete molto limitato). I messaggi con priorità elevata in genere devono comportare l'interazione dell'utente con la tua app o le relative notifiche.

Scegliere tra messaggi a priorità alta e normale

Mentre i messaggi con priorità normale sono adatti per gli aggiornamenti generali, scegli la priorità alta quando devi assicurarti la consegna immediata per questioni o azioni urgenti. Poiché il tempo di consegna dei messaggi con priorità normale può essere influenzato dalla modalità Doze, l'impostazione della priorità alta per la maggior parte delle notifiche visibili agli utenti garantisce che vengano consegnate tempestivamente. Ad esempio, le notifiche come i messaggi di chat, i problemi con un account o gli aggiornamenti sulla consegna di cibo devono essere impostate su priorità alta.

Elaborazione dei messaggi per i messaggi ad alta e normale priorità

Per le notifiche con priorità alta e normale ricevute su un dispositivo Android, vengono concessi diversi secondi per elaborare il payload del messaggio nel gestore onMessageReceived. Per le notifiche che richiedono l'elaborazione asincrona del payload del messaggio, ti consigliamo di utilizzare un costrutto come WorkManager, poiché potrebbe superare il tempo concesso al gestore onMessageReceived.

Per i messaggi ad alta priorità, puoi programmare un job rapido utilizzando Android WorkManager per assicurarti che queste notifiche abbiano la priorità e vengano eseguite fino al completamento.

Per i messaggi con priorità normale, puoi programmare una OneTimeWorkRequest regolare utilizzando Android WorkManager. In questo modo, il lavoro aggiuntivo richiesto viene elaborato senza utilizzare l'elaborazione con priorità.

Impostare la priorità dei messaggi

Puoi inviare notifiche ai tuoi utenti utilizzando Admin SDK, l'API REST FCM e la console Firebase. Per modificare l'impostazione della priorità da Admin SDK e dall'API REST FCM, devi aggiornare il payload JSON del messaggio. Puoi utilizzare il seguente esempio di codice per vedere come impostare la priorità su alta. Per le notifiche inviate dalla console, l'impostazione dei campi di notifica specifici per Android non è supportata.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

Testare le notifiche di priorità elevata in modalità Doze

Per assicurarti che le notifiche di priorità elevata vengano ricevute ed elaborate correttamente quando vengono ricevute da un utente, segui queste istruzioni per testare le notifiche:

  1. Imposta il dispositivo sulla modalità Doze seguendo le istruzioni riportate in Testare l'app con Doze.
  2. Accedi al token di registrazione FCM dalla tua app sul dispositivo di test. Per maggiori informazioni su come accedere al token, consulta Inviare un messaggio di test a un'app in background.
  3. Una volta ottenuto il token FCM, invia la notifica di priorità elevata al dispositivo di test utilizzando il codice di invio delle notifiche FCM o un comando cURL%3B%0A%7D)-,cURL,-curl%20%2DX) con parametri di configurazione corrispondenti alla notifica di priorità elevata.

Riduzione della priorità di FCM ad alta priorità su Android

I messaggi con priorità elevata su Android sono pensati per contenuti sensibili al tempo e visibili agli utenti e devono generare notifiche rivolte agli utenti. Se FCM rileva un pattern in cui i messaggi non generano notifiche visibili agli utenti, la priorità dei tuoi messaggi potrebbe essere ridotta a normale o delegata per la gestione da parte di Google Play Services.

FCM utilizza 7 giorni di comportamento dei messaggi per determinare se declassare o inviare tramite proxy i messaggi; questa determinazione viene effettuata 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 tuoi futuri messaggi con priorità elevata non saranno interessati.

Delega delle notifiche con Google Play Services

I messaggi di notifica con priorità elevata che soddisfano determinati criteri vengono inviati tramite proxy da Google Play Services anziché essere declassati. Ciò significa che le notifiche vengono visualizzate da Google Play Services per conto dell'app, senza bisogno di avviarla. Questo viene fatto per fornire un'esperienza utente complessiva migliore sui dispositivi Android.

Tieni presente che i messaggi di notifica proxy introducono modifiche al modo in cui vengono segnalate le analisi relative ai messaggi ricevuti:

  • Affinché vengano generati report sull'analisi delle notifiche proxy, la tua app deve utilizzare l'SDK FCM versione 24.0.0 o successive.
  • Potresti notare ritardi o cali nel numero di messaggi ricevuti rispetto al numero precedente all'introduzione delle notifiche proxy. Questo perché le analisi per le notifiche proxy vengono generate solo all'avvio dell'app e potrebbero non essere generate 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 Google Play Services versione 19054000 o successive. I messaggi inviati tramite l'API HTTP v1 vengono inviati tramite proxy, ma i messaggi inviati tramite la console Firebase o le API legacy non verranno inviati tramite proxy. Tieni presente che questa funzionalità è attualmente in versione beta ed è soggetta a modifiche.

Sebbene consigliamo vivamente di lasciare attivata 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 manifest dell'app, aggiungi la direttiva <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • In base all'istanza dell'app: per l'istanza dell'app, imposta fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> nel flusso UI per la tua app, a seconda del caso d'uso specifico.
  • Per ogni messaggio: imposta il tasto proxy su DENY nell'oggetto AndroidNotification per la richiesta di invio.

Misurazione della riduzione della priorità dei messaggi su Android

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

  • Tutti i messaggi. L'API Aggregate Delivery Data può segnalare la percentuale di tutti i tuoi messaggi per Android a cui viene data la priorità più bassa.FCM Alcuni messaggi potrebbero essere omessi dai report sui dati aggregati, ma nel complesso dovrebbero fornire una visione globale dei tassi di declassamento dei messaggi. Per ulteriori informazioni e codice di esempio per eseguire query sull'API, consulta l'articolo sui dati di pubblicazione aggregati. Puoi anche esplorare l'API da Explorer API.

  • Notifiche inviate al proxy. Le notifiche proxy non verranno conteggiate nelle metriche di distribuzione FCM o GA attuali, pertanto potresti riscontrare un calo fino al 15% nelle metriche di distribuzione delle notifiche. Per generare report sui messaggi proxy, utilizza l'API FCM Aggregate Delivery Data. ProxyNotificationInsightPercents indica la percentuale di notifiche proxy riuscite, nonché i dettagli dei messaggi per i quali non è possibile eseguire il proxy.

Risoluzione dei problemi relativi ai ritardi delle notifiche

  • 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 declassati. Prima di inviare messaggi ad alta priorità a un'istanza dell'applicazione, devi verificare che le notifiche siano attivate.

  • Evita di effettuare chiamate di rete aggiuntive durante l'elaborazione della notifica. Poiché una piccola parte della popolazione mobile Android si trova su reti ad alta latenza, evita di aprire una connessione ai tuoi server prima di visualizzare una notifica. Il richiamo al server prima della fine del tempo di elaborazione consentito potrebbe essere rischioso per gli utenti su reti ad alta latenza.

    Includi invece i contenuti della notifica nel messaggio FCM e visualizzali immediatamente. Se devi eseguire la sincronizzazione per ulteriori contenuti in-app su Android, puoi pianificare un'attività con WorkManager per gestirla in background.