Impostare e gestire la priorità dei messaggi

Hai due opzioni per assegnare la priorità di invio 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 e di notifica. 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.

  • Priorità alta.FCM tenta di inviare immediatamente i messaggi con priorità alta, 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.

Scegliere tra messaggi con priorità elevata e normale

Sebbene i messaggi con priorità normale siano adatti per gli aggiornamenti generali, scegli la priorità elevata quando devi garantire l'invio immediato per questioni o azioni urgenti. Poiché il tempo di invio dei messaggi con priorità normale può essere influenzato dalla modalità Sospensione, impostando la maggior parte delle notifiche visibili all'utente su alta priorità, queste verranno inviate tempestivamente. Ad esempio, le notifiche come i messaggi chat, i problemi con un account o gli aggiornamenti sulla consegna di cibo devono essere impostati su priorità elevata.

Elaborazione dei messaggi per messaggi ad alta e normale priorità

Per le notifiche con priorità elevata e normale ricevute su un dispositivo Android, vengono concessi diversi secondi per elaborare il payload del messaggio nell'handler 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 assegnato all'handler onMessageReceived.

Per i messaggi ad alta priorità, puoi pianificare un job accelerato utilizzando WorkManager di Android per assicurarti che queste notifiche vengano assegnate la priorità e vengano eseguite fino al completamento.

Per i messaggi con priorità normale, puoi pianificare un OneTimeWorkRequest normale utilizzando Android WorkManager. In questo modo, verrà eseguita l'elaborazione del lavoro aggiuntivo richiesto, senza utilizzare l'elaborazione con priorità.

Impostare la priorità dei messaggi

Puoi inviare notifiche agli utenti utilizzando Admin SDK, l'API REST FCM e la console Firebase. Per modificare l'impostazione della priorità dall'API REST Admin SDK e FCM, devi aggiornare il payload JSON del messaggio. Puoi utilizzare il seguente esempio di codice per scoprire come impostare la priorità su alta. Per le notifiche inviate dalla console, l'impostazione di 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 ad alta priorità in modalità Sospensione

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

  1. Imposta il dispositivo in modalità Sospensione seguendo le istruzioni riportate in Testare l'app con la modalità Sospensione.
  2. Accedi al token di registrazione FCM dalla tua app sul dispositivo di test. Per ulteriori 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 alta priorità al dispositivo di test utilizzando il codice di invio della notifica FCM o un comando cURL%3B%0A%7D)-,cURL,-curl%20%2DX) con parametri di configurazione corrispondenti alla notifica di alta priorità.

Riduzione della priorità di FCM con priorità elevata su Android

I messaggi con priorità elevata su Android sono destinati a contenuti visibili agli utenti e urgenti e dovrebbero 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 7 giorni di comportamento dei messaggi per determinare se dare la priorità o eseguire il proxy dei messaggi. Questa determinazione viene effettuata 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 che soddisfano determinati criteri vengono sottoposti a proxy da Google Play Services anziché essere depriorizzati. 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 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 in generale 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'FCMAPI Aggregate Delivery Data. ProxyNotificationInsightPercents riporta la percentuale di notifiche proxy con esito positivo, nonché i dettagli dei messaggi che non possono essere proxy con esito positivo.

Risolvere i problemi relativi ai ritardi delle notifiche

  • Assicurati che le notifiche siano attive per l'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.

  • Evita di effettuare chiamate di rete aggiuntive durante l'elaborazione della notifica. Poiché una piccola parte della popolazione mobile Android utilizza reti con latenza elevata, 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 latenza elevata.

    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.