Ricevi messaggi FCM in modalità di avvio diretto

Se vuoi inviare messaggi FCM alle app prima che il dispositivo venga sbloccato, puoi attivare la modalità di avvio diretto. Ad esempio, se vuoi che gli utenti della tua app ricevano notifiche di sveglia anche su un dispositivo bloccato.

Quando sviluppi questo caso d'uso, rispetta le best practice e le limitazioni generali per la modalità avvio diretto. È importante considerare la visibilità dei messaggi con avvio diretto. Qualsiasi utente con accesso al dispositivo può visualizzare questi messaggi senza inserire le credenziali utente.

Prerequisiti

  • Il dispositivo deve essere configurato per la modalità di avvio diretto.
  • Sul dispositivo deve essere installata una versione recente di Google Play Services (19.0.54 o versioni successive).
  • L'app deve utilizzare l'SDK FCM (com.google.firebase:firebase-messaging) per ricevere i messaggi FCM.

Attivare la gestione dei messaggi in modalità di avvio diretto nell'app

  1. Nel file Gradle a livello di app, aggiungi una dipendenza dalla libreria di supporto per l'avvio diretto FCM:

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. Rendi l'avvio diretto di FirebaseMessagingService dell'app consapevole aggiungendo l'attributo android:directBootAware="true" nel manifest dell'app:

    <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false"
        android:directBootAware="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    

È importante assicurarsi che questo FirebaseMessagingService possa essere eseguito in modalità di avvio diretto. Puoi verificare utilizzando i seguenti requisiti:

  • Il servizio non deve accedere all'archiviazione protetta da credenziali durante l'esecuzione in modalità avvio diretto.
  • Il servizio non deve tentare di utilizzare componenti, ad esempio Activities, BroadcastReceivers o altri Services che non sono contrassegnati come compatibili con l'avvio diretto durante l'esecuzione in modalità di avvio diretto.
  • Anche le librerie utilizzate dal servizio non devono accedere allo spazio di archiviazione protetto dalle credenziali né chiamare componenti non compatibili con l'avvio diretto durante l'esecuzione in modalità di avvio diretto. Ciò significa che qualsiasi libreria utilizzata dall'app chiamata dal servizio dovrà essere compatibile con l'avvio diretto oppure l'app dovrà verificare se è in esecuzione in modalità di avvio diretto e non chiamarle in questa modalità. Ad esempio, gli SDK Firebase funzionano con l'avvio diretto (possono essere inclusi in un'app senza causarne l'arresto anomalo in modalità di avvio diretto), ma molte API Firebase non supportano le chiamate in modalità di avvio diretto.
  • Se l'app utilizza un Application personalizzato, anche questo dovrà essere compatibile con l'avvio diretto (nessun accesso allo spazio di archiviazione protetto da credenziali in modalità di avvio diretto).Application

Inviare messaggi con avvio diretto

Puoi inviare messaggi ai dispositivi in modalità di avvio diretto utilizzando l'API HTTP v1.

La richiesta di messaggio deve includere la chiave "direct_boot_ok": true nelle opzioni AndroidConfig del corpo della richiesta. Ad esempio:

https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
  "message":{
    "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data": {
      "score": "5x1",
      "time": "15:10"
    },
    "android": {
      "direct_boot_ok": true,
    },
}