Définir et gérer la priorité des messages

Vous avez deux options pour attribuer une priorité de distribution aux messages en aval sur Android : priorité normale et priorité élevée. Voici comment fonctionne l'envoi des messages à priorité normale et élevée :

  • Priorité normale : Il s'agit de la priorité par défaut pour les messages de données et de notification. Les messages de priorité normale sont envoyés immédiatement lorsque l'appareil n'est pas en veille. Lorsque l'appareil est en mode Sommeil, la diffusion peut être retardée pour économiser la batterie jusqu'à ce que l'appareil quitte le mode Sommeil. Pour les messages moins urgents, comme les notifications de nouveaux e-mails, la synchronisation de l'UI ou la synchronisation des données de l'application en arrière-plan, choisissez la priorité de distribution normale.

  • Priorité élevée : FCM tente de distribuer les messages à priorité élevée immédiatement, ce qui permet à FCM de réactiver un appareil en veille si nécessaire et d'exécuter un traitement limité (y compris un accès réseau très limité). Les messages à priorité élevée doivent généralement entraîner une interaction de l'utilisateur avec votre application ou ses notifications.

Choisir entre les messages à priorité élevée et normale

Les messages à priorité normale conviennent aux informations générales, mais choisissez la priorité élevée lorsque vous devez vous assurer que les messages sont transmis immédiatement pour les questions ou actions urgentes. Étant donné que le délai de remise des messages de priorité normale peut être affecté par le mode Veille, définissez la plupart de vos notifications visibles par l'utilisateur sur "Haute priorité" pour vous assurer qu'elles sont remises rapidement. Par exemple, les notifications telles que les messages de chat, les problèmes liés à un compte ou les informations sur la livraison de nourriture doivent être définies sur "Priorité élevée".

Traitement des messages à priorité élevée et normale

Pour les notifications à priorité élevée et normale reçues sur un appareil Android, plusieurs secondes sont accordées pour traiter la charge utile du message dans le gestionnaire onMessageReceived. Pour toute notification nécessitant un traitement asynchrone de la charge utile du message, nous vous recommandons d'utiliser une construction telle que WorkManager, car cela pourrait dépasser le temps accordé au gestionnaire onMessageReceived.

Pour les messages à priorité élevée, vous pouvez planifier un job accéléré à l'aide d'Android WorkManager pour vous assurer que ces notifications sont prioritaires et s'exécutent jusqu'à la fin.

Pour les messages de priorité normale, vous pouvez planifier une OneTimeWorkRequest régulière à l'aide d'Android WorkManager. Cela permettra de s'assurer que le travail supplémentaire requis est traité, sans utiliser le traitement prioritaire.

Définir la priorité des messages

Vous pouvez envoyer des notifications à vos utilisateurs à l'aide de Admin SDK, de l'API REST FCM et de la console Firebase. Pour modifier votre paramètre de priorité à partir de l'API REST Admin SDK et FCM, vous devez mettre à jour la charge utile JSON du message. Vous pouvez utiliser l'exemple de code suivant pour voir comment définir la priorité sur "élevée". Pour les notifications envoyées depuis la console, la définition de champs de notification spécifiques à Android n'est pas prise en charge.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

Tester vos notifications à priorité élevée en mode Veille

Pour vous assurer que vos notifications de haute priorité sont bien reçues et traitées par les utilisateurs, suivez ces instructions pour les tester :

  1. Mettez votre appareil en mode Sommeil en suivant les instructions de Tester votre application avec le mode Sommeil.
  2. Accédez à votre jeton d'enregistrement FCM depuis votre application sur l'appareil de test. Pour savoir comment accéder au jeton, consultez Envoyer un message de test à une application en arrière-plan.
  3. Une fois que vous avez le jeton FCM, envoyez votre notification à priorité élevée à l'appareil de test à l'aide de votre code d'envoi de notification FCM ou d'une commande cURL%3B%0A%7D)-,cURL,-curl%20%2DX) qui comporte des paramètres de configuration correspondant à votre notification à priorité élevée.

Dépriorisation de FCM de priorité élevée sur Android

Sur Android, les messages à priorité élevée sont destinés à du contenu visible par l'utilisateur et sensible au facteur temps. Ils doivent entraîner l'affichage de notifications pour l'utilisateur. Si FCM détecte un schéma dans lequel les messages n'entraînent pas de notifications visibles par l'utilisateur, la priorité de vos messages peut être abaissée à la priorité normale ou ils peuvent être délégués pour être traités par les services Google Play.

FCM utilise sept jours de comportement des messages pour déterminer s'il doit les déprioriser ou les transférer. Il prend cette décision de manière indépendante pour chaque instance de votre application. Si, en réponse aux messages à priorité élevée, les notifications sont affichées de manière visible pour l'utilisateur, vos futurs messages à priorité élevée ne seront pas concernés.

Délégation des notifications avec les services Google Play

Les messages de notification à priorité élevée qui répondent à certains critères sont transmis par les services Google Play au lieu d'être dépriorisés. Cela signifie que les notifications sont affichées par les services Google Play au nom de l'application, sans qu'il soit nécessaire de la démarrer. Cette opération est effectuée pour offrir une meilleure expérience utilisateur globale sur les appareils Android.

Notez que les messages de notification proxy introduisent des modifications dans la façon dont les données analytiques liées à la réception des messages sont signalées :

  • Pour que les données analytiques des notifications proxyfiées soient signalées, votre application doit utiliser le SDK FCM version 24.0.0 ou ultérieure.
  • Vous constaterez peut-être des retards ou des baisses du nombre de messages reçus par rapport à la période précédant l'introduction des notifications par proxy. En effet, les données analytiques pour les notifications proxy ne sont signalées qu'une fois votre application démarrée. Elles peuvent même ne pas être signalées du tout si la notification n'entraîne pas l'ouverture de l'application.

Le proxy des messages de notification de cette manière est le comportement par défaut des applications utilisant Android Q+ et les services Google Play version 19054000 ou ultérieure. Les messages envoyés via l'API HTTP v1 sont transmis par proxy, mais ceux envoyés via la console Firebase ou les anciennes API ne le seront pas. Notez que cette fonctionnalité est actuellement en version bêta et qu'elle peut évoluer.

Bien que nous vous recommandions vivement de laisser la délégation activée pour préserver la batterie et la mémoire de l'appareil, vous pouvez désactiver ce comportement de l'une des manières suivantes :

  • Au niveau de l'application : dans le fichier manifeste de votre application, ajoutez la directive <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • Au niveau de l'instance d'application : pour l'instance d'application, définissez fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> dans le flux d'interface utilisateur de votre application, en fonction du cas d'utilisation spécifique.
  • Pour chaque message : définissez la clé proxy sur DENY dans l'objet AndroidNotification de la requête d'envoi.

Mesurer la dépriorisation des messages sur Android

  • Messages individuels : Lors de la distribution, vous pouvez déterminer si un message individuel a été dépriorisé ou non en comparant sa priorité de distribution, à partir de getPriority(), avec sa priorité d'origine, à partir de getOriginalPriority().

  • Tous les messages L'API FCM Aggregate Delivery Data peut indiquer le pourcentage de tous vos messages envoyés à Android qui sont mis en priorité basse. Il est possible que certains messages soient omis des rapports de données agrégées, mais ils devraient globalement donner une vue d'ensemble des taux de dépriorisation des messages. Pour en savoir plus et obtenir un exemple de code pour interroger l'API, consultez notre article sur les données de diffusion agrégées. Vous pouvez également explorer ces données à partir de l'explorateur d'API.

  • Notifications de proxy : Les notifications proxyfiées ne seront pas comptabilisées dans les métriques de diffusion actuelles de FCM ou GA. Vous constaterez peut-être une baisse de 15 % maximum dans les métriques de diffusion des notifications. Pour générer des rapports sur les messages proxyfiés, utilisez l'API FCM Aggregate Delivery Data. ProxyNotificationInsightPercents indique le pourcentage de notifications proxyfiées et fournit des informations sur les messages qui ne peuvent pas être proxyfiés.

Résoudre les problèmes de retard de notifications

  • Assurez-vous que les notifications sont activées pour votre instance d'application. Si l'utilisateur a désactivé l'autorisation d'envoi de notifications pour votre application, aucune de vos notifications ne sera publiée. Par conséquent, vos messages seront moins prioritaires. Vous devez vérifier que les notifications sont activées avant d'envoyer des messages à priorité élevée à une instance d'application.

  • Évitez d'effectuer des appels réseau supplémentaires lors du traitement de votre notification. Étant donné qu'une petite partie de la population mobile Android utilise des réseaux à latence élevée, évitez d'ouvrir une connexion à vos serveurs avant d'afficher une notification. Rappeler le serveur avant la fin du temps de traitement autorisé peut être risqué pour les utilisateurs sur les réseaux à latence élevée.

    Incluez plutôt le contenu de la notification dans le message FCM et affichez-le immédiatement. Si vous devez synchroniser du contenu supplémentaire dans l'application sur Android, vous pouvez planifier une tâche avec WorkManager pour la gérer en arrière-plan.