Si vous souhaitez envoyer FCM messages aux applications avant le déverrouillage de l'appareil, vous pouvez activer le mode Démarrage direct. Par exemple, si vous souhaitez que les utilisateurs de votre application reçoivent des notifications d'alarme même sur un appareil verrouillé.
Lorsque vous créez ce cas d'utilisation, respectez les bonnes pratiques et les restrictions générales pour le mode Démarrage direct. Il est important de tenir compte de la visibilité des messages compatibles avec le mode Démarrage direct. Tout utilisateur ayant accès à l'appareil peut consulter ces messages sans saisir d'identifiants.
Prérequis
- L'appareil doit être configuré pour le mode Démarrage direct.
- La dernière version des services Google Play doit être installée sur l'appareil (19.0.54 ou version ultérieure).
- L'application doit utiliser le SDK FCM (
com.google.firebase:firebase-messaging) pour recevoir des messages FCM.
Activer la gestion des messages en mode Démarrage direct dans votre application
Dans le fichier Gradle au niveau de l'application, ajoutez une dépendance à la bibliothèque de compatibilité avec le mode Démarrage direct FCMdirect :
implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'Rendez le
FirebaseMessagingServicede l'application compatible avec le mode Démarrage direct en ajoutant l'android:directBootAware="true"attribut dans le fichier manifeste de l'application :<service android:name=".java.MyFirebaseMessagingService" android:exported="false" android:directBootAware="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Il est important de s'assurer que ce FirebaseMessagingService peut s'exécuter en mode Démarrage direct. Vous pouvez vérifier cela en respectant les exigences suivantes :
- Le service ne doit pas accéder au stockage protégé par des identifiants lorsqu'il s'exécute en mode Démarrage direct.
- Le service ne doit pas tenter d'utiliser des composants, tels que
Activities,BroadcastReceiversou d'autresServicesqui ne sont pas marqués comme compatibles avec le mode Démarrage direct lorsqu'il s'exécute en mode Démarrage direct. - Les bibliothèques utilisées par le service ne doivent pas non plus accéder au stockage protégé par des identifiants ni appeler des composants non compatibles avec le mode Démarrage direct lorsqu'il s'exécute en mode Démarrage direct. Cela signifie que toutes les bibliothèques utilisées par l'application et appelées à partir du service doivent être compatibles avec le mode Démarrage direct, ou que l'application doit vérifier si elle s'exécute en mode Démarrage direct et ne pas les appeler dans ce mode. Par exemple, les SDK Firebase fonctionnent avec le mode Démarrage direct (ils peuvent être inclus dans une application sans la faire planter en mode Démarrage direct), mais de nombreuses API Firebase ne sont pas compatibles avec les appels en mode Démarrage direct.
- Si l'application utilise une
Applicationpersonnalisée, celle-ci doit également être compatible avec le mode Démarrage direct (aucun accès au stockage protégé par des identifiants en mode Démarrage direct).Application
Envoyer des messages compatibles avec le mode Démarrage direct
Vous pouvez envoyer des messages aux appareils en mode Démarrage direct à l'aide de l' API HTTP v1.
La requête de message doit inclure la clé "direct_boot_ok": true dans les
AndroidConfig options du corps de la requête. Exemple :
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,
},
}