Recevoir des messages FCM en mode démarrage direct

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

  1. 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'
    
  2. Rendez le FirebaseMessagingService de 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, BroadcastReceivers ou d'autres Services qui 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 Application personnalisé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,
    },
}