Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Envoyer des messages à des groupes d'appareils sur iOS

La messagerie de groupe d'appareils vous permet d'ajouter plusieurs appareils à un seul groupe. Ceci est similaire à la messagerie de rubrique, mais inclut l'authentification pour garantir que l'appartenance au groupe est gérée uniquement par vos serveurs. Par exemple, si vous souhaitez envoyer différents messages à différents modèles de téléphone, vos serveurs peuvent ajouter / supprimer des inscriptions aux groupes appropriés et envoyer le message approprié à chaque groupe. La messagerie de groupe de périphériques diffère de la messagerie de rubrique en ce qu'elle implique la gestion des groupes de périphériques à partir de vos serveurs plutôt que directement dans votre application.

Vous pouvez utiliser la messagerie de groupe d'appareils via les anciens protocoles XMPP ou HTTP sur votre serveur d'applications. Le SDK Firebase Admin pour Node.js basé sur les protocoles hérités fournit également des fonctionnalités de messagerie de groupe de périphériques. Le nombre maximum de membres autorisés pour une clé de notification est de 20.

Gérer les groupes d'appareils

Avant d'envoyer des messages à un groupe d'appareils, vous devez:

  1. Obtenez des jetons d'enregistrement pour chaque appareil que vous souhaitez ajouter au groupe.

  2. Créez la notification_key , qui identifie le groupe de périphériques en mappant un groupe particulier (généralement un utilisateur) à tous les jetons d'enregistrement associés au groupe. Vous pouvez créer des clés de notification sur le serveur d'applications ou sur les applications clientes Android.

La gestion de base des groupes d'appareils - création et suppression de groupes et ajout ou suppression d'appareils - est généralement effectuée via le serveur d'applications. Consultez la référence du protocole HTTP hérité pour obtenir une liste des clés prises en charge.

En option, les applications clientes Android peuvent gérer les groupes d'appareils du côté client.

Gérer les groupes d'appareils sur le serveur d'applications

Créer un groupe d'appareils

Pour créer un groupe d'appareils, envoyez une requête POST qui fournit un nom pour le groupe et une liste de jetons d'enregistrement pour les appareils. FCM renvoie une nouvelle notification_key qui représente le groupe de périphériques.

Requête HTTP POST

Envoyez une demande comme celle-ci à https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["4", "8", "15", "16", "23", "42"]
}

La notification_key_name est un nom ou un identifiant (par exemple, il peut s'agir d'un nom d'utilisateur) qui est unique à un groupe donné. Les notification_key_name et notification_key sont uniques à un groupe de jetons d'enregistrement. Il est important que notification_key_name soit unique par application cliente si vous avez plusieurs applications clientes pour le même ID d'expéditeur . Cela garantit que les messages vont uniquement à l'application cible prévue.

Format de réponse

Une demande réussie renvoie une notification_key comme suit:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Enregistrez la notification_key et le notification_key_name correspondant à utiliser dans les opérations suivantes.

Récupération d'une clé de notification

Si vous devez récupérer une clé de notification existante, utilisez la notification_key_name dans une requête GET comme indiqué:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

Pour chaque requête GET pour un nom de clé de notification donné, le serveur renvoie une chaîne codée unique. Bien que chaque chaîne puisse sembler être une clé différente, il s'agit en fait d'une valeur `notification_key` valide.

Ajouter et supprimer des appareils d'un groupe d'appareils

Pour ajouter ou supprimer des périphériques d'un groupe existant, envoyez une demande POST avec le paramètre d' operation défini pour add ou remove , et fournissez les jetons d'enregistrement pour l'ajout ou la suppression.

Requête HTTP POST

Par exemple, pour ajouter un appareil avec l'ID d'enregistrement 51 à appUser-Chris, vous devez envoyer cette demande:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["51"]
}

Format de réponse

Une demande réussie pour ajouter ou supprimer un appareil renvoie une notification_key comme suit:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Envoi de messages en aval à des groupes d'appareils

L'envoi de messages à un groupe d'appareils est très similaire à l'envoi de messages à un appareil individuel. Réglez le to paramètre à la clé de notification unique pour le groupe de périphériques. Voir Types de messages pour plus de détails sur la prise en charge des charges utiles. Les exemples de cette page montrent comment envoyer des messages de données à des groupes de périphériques dans les protocoles HTTP et XMPP.

Requête HTTP POST du groupe de périphériques

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

Réponse HTTP du groupe de périphériques

Voici un exemple de "succès" - la notification_key a 2 jetons d'enregistrement qui lui sont associés et le message a été envoyé avec succès aux deux:

{
  "success": 2,
  "failure": 0
}

Voici un exemple de "succès partiel" - la notification_key a 3 jetons d'enregistrement qui lui sont associés. Le message a été envoyé avec succès à l'un des jetons d'enregistrement uniquement. Le message de réponse répertorie les jetons d'enregistrement qui n'ont pas pu recevoir le message:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Lorsqu'un message ne parvient pas à être remis à un ou plusieurs des jetons d'inscription associés à une notification_key , le serveur d'application doit réessayer avec interruption entre les tentatives.

Si le serveur tente d'envoyer un message à un groupe de périphériques qui n'a pas de membres, la réponse ressemble à ce qui suit, avec 0 succès et 0 échec:

{
  "success": 0,
  "failure": 0
}

Message XMPP du groupe de périphériques

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

Réponse XMPP du groupe de périphériques

Lorsque le message est envoyé avec succès à l'un des périphériques du groupe, le serveur de connexion XMPP répond par un ACK. Si tous les messages envoyés à tous les périphériques du groupe échouent, le serveur de connexion XMPP répond avec un NACK.

Voici un exemple de "succès" - la notification_key a 3 jetons d'enregistrement qui lui sont associés et le message a été envoyé avec succès à tous:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Voici un exemple de "succès partiel" - la notification_key a 3 jetons d'enregistrement qui lui sont associés. Le message a été envoyé avec succès à l'un des jetons d'enregistrement uniquement. Le message de réponse répertorie les jetons d'enregistrement qui n'ont pas pu recevoir le message:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Lorsque le serveur de connexion FCM ne parvient pas à livrer à tous les périphériques du groupe. Le serveur d'applications recevra une réponse nack.

Pour obtenir la liste complète des options de message, consultez les informations de référence du protocole de serveur de connexion choisi, HTTP ou XMPP .

Envoi de messages en amont à des groupes d'appareils

Pour envoyer des messages en amont à des groupes d'appareils sur iOS, l'application cliente iOS doit implémenter FIRMessaging.sendMessage :

(void)sendMessage:(nonnull NSDictionary *)message
     to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;