Recevoir des messages FCM en mode démarrage direct

Si vous souhaitez envoyer des messages FCM aux applications avant le déverrouillage de l'appareil, vous pouvez activer le mode de 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 restrictions générales du mode démarrage direct. Il est important de prendre en compte la visibilité des messages activés pour le 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 de démarrage direct.
  • Une version récente des services Google Play (19.0.54 ou ultérieure) doit être installée sur l'appareil.
  • 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 d'assistance Direct Boot FCM :

    implementation 'com.google.firebase:firebase-messaging-directboot:20.2.0'
    
  2. Rendez l'élément FirebaseMessagingService de l'application compatible avec le démarrage direct en ajoutant l'attribut android:directBootAware="true" 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 en fonction des exigences suivantes :

  • Le service ne doit pas accéder au stockage protégé par 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 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 démarrage direct lorsqu'elles s'exécutent en mode démarrage direct. Cela signifie que toutes les bibliothèques utilisées par l'application qui sont appelées depuis le service devront être compatibles avec le démarrage direct, ou que l'application devra 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 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 un Application personnalisé, celui-ci Application doit également être compatible avec le démarrage direct (pas d'accès à l'espace de stockage protégé par identifiants en mode démarrage direct).

Envoyer des messages activés pour le 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 options AndroidConfig 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,
    },
}