了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Imposta e gestisci la priorità dei messaggi

Hai due opzioni per assegnare la priorità di recapito ai messaggi downstream su Android: priorità normale e alta. La consegna di messaggi con priorità normale e alta funziona così:

  • Priorità normale. Questa è la priorità predefinita per i messaggi di dati . I messaggi con priorità normale vengono recapitati immediatamente quando il dispositivo non è in sospensione. Quando il dispositivo è in modalità Doze , l'erogazione può essere ritardata per risparmiare la batteria finché il dispositivo non esce dalla modalità Doze. Per i messaggi meno urgenti, come le notifiche di nuove e-mail, la sincronizzazione dell'interfaccia utente o la sincronizzazione dei dati delle app in background, scegli la priorità di consegna normale.

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

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

Utilizzo di messaggi ad alta priorità per Android

I messaggi ad alta priorità su Android sono pensati per contenuti sensibili al tempo, visibili all'utente e dovrebbero comportare notifiche rivolte all'utente. Se FCM rileva uno schema in cui i messaggi non generano notifiche rivolte all'utente, i tuoi messaggi potrebbero essere deprioritizzati a priorità normale. FCM utilizza 7 giorni di comportamento del messaggio per determinare se ridurre la priorità dei messaggi; effettua questa determinazione in modo indipendente per ogni istanza dell'applicazione. Se, in risposta a messaggi ad alta priorità, le notifiche vengono visualizzate in modo visibile all'utente, i futuri messaggi ad alta priorità non perderanno la priorità. Questo vale se la notifica viene visualizzata dall'SDK FCM tramite un messaggio di notifica o una notifica generata dallo sviluppatore tramite un messaggio di dati .

Misurazione della depriorizzazione dei messaggi su Android

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

  • Tutti i messaggi. L' API Aggregate Delivery Data di FCM può segnalare quale percentuale di tutti i tuoi messaggi ad Android sta perdendo la priorità. Alcuni messaggi possono essere omessi dai rapporti sui dati aggregati, ma nel complesso dovrebbero fornire una visione globale dei tassi di depriorizzazione dei messaggi. Consulta il nostro articolo sui dati di consegna aggregati per ulteriori informazioni e codice di esempio per l'interrogazione dell'API; può anche essere esplorato da API explorer .

Risoluzione dei problemi

  • Assicurati che l'istanza dell'app abbia le notifiche abilitate. Se l'utente ha disabilitato l'autorizzazione di notifica per la tua app, nessuna delle tue notifiche verrà pubblicata, di conseguenza, i tuoi messaggi perderanno la priorità. È necessario verificare che le notifiche siano abilitate prima di inviare messaggi ad alta priorità a un'istanza dell'applicazione.

  • Non chiamare casa prima di aver pubblicato una 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. Richiamare il server prima della fine del tempo di elaborazione consentito può essere rischioso per gli utenti su reti ad alta latenza. Includere invece il contenuto della notifica nel messaggio FCM e visualizzarlo immediatamente. Se devi eseguire la sincronizzazione per ulteriori contenuti in-app su Android, puoi programmare un'attività con WorkManager per gestirla in background.