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
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'
Rendi l'avvio diretto di
FirebaseMessagingService
dell'app consapevole aggiungendo l'attributoandroid: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 altriServices
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,
},
}