Protocole HTTP de Firebase Cloud Messaging

Ce document fournit une référence de la syntaxe HTTP utilisée pour transmettre des messages de votre serveur d'application aux applications clientes via Firebase Cloud Messaging.

Lorsque vous utilisez l'ancien protocole HTTP, votre serveur d'application doit rediriger toutes les requêtes HTTP vers ce point de terminaison :

https://fcm.googleapis.com/fcm/send

Les paramètres et options disponibles se répartissent en grandes catégories :

Syntaxe des messages en aval

Cette section fournit la syntaxe pour envoyer des messages en aval et interpréter les réponses HTTP de Firebase Cloud Messaging.

Messages HTTP en aval (JSON)

Le tableau suivant indique les cibles, les options et la charge utile des messages JSON HTTP.

Table 1. Cibles, options et charge utile pour les messages HTTP en aval (JSON).

Paramètre Utilisation Description
Targets (Cibles)
to Facultatif, chaîne

Ce paramètre spécifie le destinataire d'un message.

La valeur peut être le jeton d'enregistrement d'un appareil, la clé de notification d'un groupe d'appareils ou un seul sujet (préfixé par /topics/). Pour envoyer des messages à plusieurs sujets, utilisez le paramètre condition.

registration_ids
Facultatif, tableau de chaînes

Ce paramètre spécifie le destinataire d'un message de multidiffusion, c'est-à-dire un message envoyé à plusieurs jetons d'enregistrement.

La valeur doit être un tableau de jetons d'enregistrement auxquels envoyer le message multicast. Le tableau doit contenir au moins un et au plus 1 000 jetons d'enregistrement. Pour envoyer un message à un seul appareil, utilisez le paramètre to.

Les messages multicast ne sont autorisés qu'au format JSON HTTP.

condition Facultatif, chaîne

Ce paramètre spécifie une expression logique de conditions qui déterminent la cible du message.

Condition acceptée : "Topic", au format "'votreTopic' dans les sujets". Cette valeur n'est pas sensible à la casse.

Opérateurs compatibles: &&, ||. Deux opérateurs maximum par message de sujet acceptés.

notification_key
Obsolète
Facultatif, chaîne

Ce paramètre est obsolète. Utilisez plutôt to pour spécifier les destinataires des messages. Pour en savoir plus sur l'envoi de messages à plusieurs appareils, consultez la documentation de votre plate-forme.

Options
collapse_key Facultatif, chaîne

Ce paramètre identifie un groupe de messages (par exemple, avec collapse_key: "Updates Available") pouvant être réduits, de sorte que seul le dernier message est envoyé lorsque la distribution peut être réactivée. Cela permet d'éviter d'envoyer trop de messages identiques lorsque l'appareil revient en ligne ou devient actif.

Notez que l'ordre dans lequel les messages sont envoyés n'est pas garanti.

Remarque : Vous ne pouvez utiliser qu'un maximum de quatre clés de réduction différentes à la fois. Cela signifie que FCM peut stocker simultanément quatre messages différents par application cliente. Si vous dépassez ce nombre, il n'est pas garanti que les quatre clés de réduction FCM conserveront.

priority Facultatif, chaîne

Définit la priorité du message. Les valeurs valides sont "normal" (normal) et "high" (élevé). Sur les plates-formes Apple, elles correspondent aux priorités 5 et 10 des notifications APN.

Par défaut, les messages de notification sont envoyés avec une priorité élevée, et les messages de données sont envoyés avec une priorité normale. La priorité normale optimise l'utilisation de la batterie de l'application cliente et doit être utilisée à moins qu'une livraison immédiate ne soit requise. Pour les messages de priorité normale, l'application peut recevoir le message avec un délai non spécifié.

Lorsqu'un message est envoyé avec une priorité élevée, il est envoyé immédiatement et l'application peut afficher une notification.

content_available Facultatif, booléen

Sur les plates-formes Apple, utilisez ce champ pour représenter content-available dans la charge utile des APN. Lorsqu'une notification ou un message est envoyé et que cette valeur est définie sur true, une application cliente inactive est activée et le message est envoyé via les APN en tant que notification silencieuse et non via FCM. Notez que la diffusion des notifications silencieuses dans les APN n'est pas garantie. Elles peuvent dépendre de facteurs tels que l'activation du mode Économie d'énergie par l'utilisateur, la fermeture forcée de l'application, etc. Sous Android, les messages de données activent l'application par défaut. Dans Chrome, ce n'est actuellement pas possible.

mutable_content Facultatif, valeur booléenne JSON

Sur les plates-formes Apple, utilisez ce champ pour représenter mutable-content dans la charge utile des APN. Lorsqu'une notification est envoyée et qu'elle est définie sur true, le contenu de la notification peut être modifié avant son affichage à l'aide d'une extension d'application Notification Service. Ce paramètre sera ignoré pour Android et le Web.

time_to_live Facultatif, nombre

Ce paramètre spécifie la durée (en secondes) pendant laquelle le message doit être conservé dans l'espace de stockage FCM si l'appareil est hors connexion. La valeur TTL maximale acceptée est de quatre semaines, et la valeur par défaut est de quatre semaines. Pour en savoir plus, consultez Définir la durée de vie d'un message.

restricted_package_
name
(Android uniquement)
Facultatif, chaîne Ce paramètre spécifie le nom du package de l'application pour laquelle les jetons d'enregistrement doivent correspondre afin de recevoir le message.
dry_run Facultatif, booléen

Lorsqu'il est défini sur true, ce paramètre permet aux développeurs de tester une requête sans envoyer réellement de message.

La valeur par défaut est false.

Charge utile
data Facultatif, objet

Ce paramètre spécifie les paires clé/valeur personnalisées de la charge utile du message.

Par exemple, avec data:{"score":"3x1"}:

Sur les plates-formes Apple, si le message est envoyé via des APN, il représente les champs de données personnalisées. S'il est envoyé via FCM, il est représenté sous la forme d'un dictionnaire de clés-valeurs dans AppDelegate application:didReceiveRemoteNotification:.

Sur Android, cela entraînerait un intent supplémentaire nommé score avec la valeur de chaîne 3x1.

La clé ne doit pas être un mot réservé ("from", "message_type" ou tout mot commençant par "google" ou "gcm"). N'utilisez aucun des mots définis dans ce tableau (par exemple, collapse_key).

Nous vous recommandons d'utiliser des valeurs de type chaîne. Vous devez convertir les valeurs d'objets ou d'autres types de données autres que des chaînes (par exemple, des entiers ou des valeurs booléennes) en chaînes.

notification Facultatif, objet Ce paramètre spécifie les paires clé-valeur prédéfinies visibles par l'utilisateur de la charge utile de notification. Pour en savoir plus, consultez "Prise en charge des charges utiles de notification". Pour en savoir plus sur les options de message de notification et de données, consultez la section Types de messages. Si une charge utile de notification est fournie ou si l'option content_available est définie sur true pour un message envoyé à un appareil Apple, le message est envoyé via les APN, sinon il est envoyé via FCM.

Compatibilité avec la charge utile de notification

Les tableaux suivants répertorient les clés prédéfinies disponibles pour créer des messages de notification pour iOS et Android.

Tableau 2a. iOS : clés pour les messages de notification

Paramètre Utilisation Description
title Facultatif, chaîne

Titre de la notification.

Ce champ n'est pas visible sur les téléphones et les tablettes.

body Facultatif, chaîne

Corps du texte de la notification.

sound Facultatif, chaîne

Son à lire lorsque l'appareil reçoit la notification.

Chaîne spécifiant les fichiers audio dans le bundle principal de l'application cliente ou dans le dossier Library/Sounds du conteneur de données de l'application. Pour en savoir plus, consultez la bibliothèque des développeurs iOS.

badge Facultatif, chaîne

Valeur du badge sur l'icône de l'application sur l'écran d'accueil.

S'il n'est pas spécifié, le badge n'est pas modifié.

Si la valeur est 0, le badge est supprimé.

click_action Facultatif, chaîne

Action associée à un clic d'un utilisateur sur la notification.

Correspond à category dans la charge utile APNs.

subtitle Facultatif, chaîne

Sous-titre de la notification.

body_loc_key Facultatif, chaîne

Clé de la chaîne de corps dans les ressources de chaîne de l'application à utiliser pour localiser le texte du corps en fonction de la localisation actuelle de l'utilisateur.

Correspond à loc-key dans la charge utile des APN.

Pour en savoir plus, consultez les sections Documentation de référence sur les clés de charge utile et Localiser le contenu de vos notifications à distance.

body_loc_args Facultatif, tableau JSON sous forme de chaîne

Valeurs de chaîne variable à utiliser à la place des spécificateurs de format dans body_loc_key pour localiser le texte du corps en fonction de la localisation actuelle de l'utilisateur.

Correspond à loc-args dans la charge utile APNs.

Pour en savoir plus, consultez les sections Documentation de référence sur les clés de charge utile et Localiser le contenu de vos notifications à distance.

title_loc_key Facultatif, chaîne

Clé de la chaîne de titre dans les ressources de chaîne de l'application à utiliser pour localiser le texte du titre en fonction de la localisation actuelle de l'utilisateur.

Correspond à title-loc-key dans la charge utile APNs.

Pour en savoir plus, consultez les sections Documentation de référence sur les clés de charge utile et Localiser le contenu de vos notifications à distance.

title_loc_args Facultatif, tableau JSON sous forme de chaîne

Valeurs de chaîne variables à utiliser à la place des spécificateurs de format dans title_loc_key pour localiser le texte du titre en fonction de la localisation actuelle de l'utilisateur.

Correspond à title-loc-args dans la charge utile APNs.

Pour en savoir plus, consultez les sections Documentation de référence sur les clés de charge utile et Localiser le contenu de vos notifications à distance.

Tableau 2b. Android : clés pour les messages de notification

Paramètre Utilisation Description
title Facultatif, chaîne

Titre de la notification.

body Facultatif, chaîne

Corps du texte de la notification.

android_channel_id Facultatif, chaîne

ID de canal de la notification (nouveauté d'Android O)

L'application doit créer un canal avec cet ID de canal avant de recevoir une notification avec cet ID de canal.

Si vous n'envoyez pas cet ID de chaîne dans la requête ou si l'ID de canal fourni n'a pas encore été créé par l'application, FCM utilise l'ID de chaîne spécifié dans le fichier manifeste de l'application.

icon Facultatif, chaîne

Icône de la notification.

Définit l'icône de notification sur myicon pour la ressource drawable myicon. Si vous n'envoyez pas cette clé dans la requête, FCM affiche l'icône du lanceur spécifiée dans le fichier manifeste de votre application.

sound Facultatif, chaîne

Son à lire lorsque l'appareil reçoit la notification.

Accepte "default" ou le nom de fichier d'une ressource audio groupée dans l'application. Les fichiers audio doivent se trouver dans /res/raw/.

tag Facultatif, chaîne

Identifiant utilisé pour remplacer les notifications existantes dans le panneau des notifications.

S'il n'est pas spécifié, chaque requête crée une notification.

Si vous spécifiez cette valeur et qu'une notification avec la même balise est déjà affichée, la nouvelle notification remplace l'ancienne dans le panneau des notifications.

color Facultatif, chaîne

Couleur de l'icône de la notification, exprimée au format #rrggbb.

click_action Facultatif, chaîne

Action associée à un clic de l'utilisateur sur la notification.

Si spécifié, une activité avec un filtre d'intent correspondant est lancée lorsqu'un utilisateur clique sur la notification.

body_loc_key Facultatif, chaîne

Clé de la chaîne de corps dans les ressources de chaîne de l'application à utiliser pour localiser le texte du corps en fonction de la localisation actuelle de l'utilisateur.

Pour en savoir plus, consultez la section Ressources de chaîne.

body_loc_args Facultatif : tableau JSON en tant que chaîne

Valeurs de chaîne de variable à utiliser à la place des spécificateurs de format dans body_loc_key pour localiser le corps du texte dans la localisation actuelle de l'utilisateur.

Pour en savoir plus, consultez la section Mise en forme et style.

title_loc_key Facultatif, chaîne

Clé de la chaîne de titre dans les ressources de chaîne de l'application à utiliser pour localiser le texte du titre en fonction de la localisation actuelle de l'utilisateur.

Pour en savoir plus, consultez la section Ressources de chaîne.

title_loc_args Facultatif : tableau JSON en tant que chaîne

Valeurs de chaîne de variable à utiliser à la place des spécificateurs de format dans title_loc_key pour localiser le texte du titre dans la localisation actuelle de l'utilisateur.

Pour en savoir plus, consultez la section Mise en forme et style.

Tableau 2c. Web (JavaScript) : clés pour les messages de notification

Paramètre Utilisation Description
title Facultatif, chaîne

Titre de la notification.

body Facultatif, chaîne

Corps du texte de la notification.

icon Facultatif, chaîne

URL à utiliser pour l'icône de la notification.

click_action Facultatif, chaîne

Action associée à un clic de l'utilisateur sur la notification.

Pour toutes les valeurs d'URL, HTTPS est obligatoire.

Messages HTTP en aval (texte brut)

Le tableau suivant répertorie la syntaxe des cibles, des options et de la charge utile dans les messages HTTP en texte brut en aval.

Tableau 3. Cibles, options et charge utile pour les messages HTTP en texte brut en aval.

Paramètre Utilisation Description
Targets (Cibles)
registration_id Obligatoire, chaîne

Ce paramètre spécifie les applications clientes (jetons d'enregistrement) qui reçoivent le message.

La messagerie multidiffusion (envoi à plusieurs jetons d'enregistrement) n'est autorisée qu'au format JSON HTTP.

Options
collapse_key Facultatif, chaîne Pour en savoir plus, consultez le tableau 1.
time_to_live Facultatif, nombre Pour en savoir plus, consultez le tableau 1.
restricted_package_name Facultatif, chaîne Pour en savoir plus, consultez le tableau 1.
dry_run Facultatif, booléen Pour en savoir plus, consultez le tableau 1.
Charge utile
data.<key> Facultatif, chaîne

Ce paramètre spécifie les paires clé-valeur de la charge utile du message. Le nombre de paramètres clé-valeur n'est pas limité, mais la taille totale du message est limitée à 4 096 octets.

Par exemple, sous Android, "data.score"."3x1" génère un intent supplémentaire nommé score avec la valeur de chaîne 3x1.

La clé ne doit pas être un mot réservé ("de", "type_message", ni tout mot commençant par "google" ou "gcm"). N'utilisez aucun des mots définis dans ce tableau (par exemple, collapse_key).

Interpréter une réponse de message en aval

Le serveur de l'application doit évaluer à la fois l'en-tête et le corps de la réponse du message pour interpréter la réponse du message envoyée depuis FCM. Le tableau suivant décrit les réponses possibles.

Tableau 4. En-tête de réponse du message HTTP en aval.

Réponse Description
200 Le message a bien été traité. Le corps de la réponse contient plus d'informations sur l'état du message, mais son format dépend de la requête au format JSON ou au format texte brut. Pour en savoir plus, consultez le tableau 5.
400 Ne s'applique qu'aux requêtes JSON. Indique que la requête n'a pas pu être analysée au format JSON ou qu'elle contenait des champs non valides (par exemple, la transmission d'une chaîne où un nombre était attendu). Le motif exact de l'échec est décrit dans la réponse. Le problème doit être résolu avant que la requête puisse être réessayée.
401 Une erreur s'est produite lors de l'authentification du compte de l'expéditeur.
5xx Les erreurs de la plage 500-599 (par exemple, 500 ou 503) indiquent qu'une erreur interne s'est produite dans le backend FCM lors de la tentative de traitement de la requête ou que le serveur est temporairement indisponible (par exemple, en raison de délais avant expiration). L'expéditeur doit réessayer plus tard, en respectant tout en-tête Retry-After inclus dans la réponse. Les serveurs d'applications doivent implémenter un intervalle exponentiel entre les tentatives.

Le tableau suivant liste les champs d'un corps de réponse de message en aval (JSON).

Tableau 5. Corps de réponse du message HTTP en aval (JSON).

Paramètre Utilisation Description
multicast_id Obligatoire, nombre ID (numéro) unique identifiant le message multicast.
success Obligatoire, nombre Nombre de messages traités sans erreur.
failure Obligatoire, nombre Nombre de messages qui n'ont pas pu être traités.
results Obligatoire, tableau d'objets Tableau d'objets représentant l'état des messages traités. Les objets sont répertoriés dans le même ordre que la requête (par exemple, pour chaque ID d'enregistrement de la requête, son résultat est répertorié dans le même index dans la réponse).
  • message_id : chaîne spécifiant un ID unique pour chaque message traité avec succès.
  • error : chaîne spécifiant l'erreur qui s'est produite lors du traitement du message pour le destinataire. Les valeurs possibles figurent dans le tableau 9.

Tableau 6 Corps de la réponse HTTP du message de sujet (JSON)

Paramètre Utilisation Description
message_id Facultatif, nombre ID du message du sujet lorsque FCM a bien reçu la requête et tentera d'effectuer la distribution sur tous les appareils abonnés.
error Facultatif, chaîne Erreur survenue lors du traitement du message. Les valeurs possibles sont indiquées dans le tableau 9.

Tableau 7. Réponse de succès pour le corps de réponse du message HTTP en aval (texte brut).

Paramètre Utilisation Description
id Obligatoire, chaîne Ce paramètre spécifie l'ID de message unique FCM traité avec succès.
registration_id Facultatif, chaîne Ce paramètre spécifie le jeton d'enregistrement de l'application cliente à laquelle le message a été traité et envoyé.

Tableau 8. Réponse d'erreur pour le corps de la réponse du message HTTP en aval (texte brut).

Paramètre Utilisation Description
Error Obligatoire, chaîne Ce paramètre spécifie la valeur d'erreur lors du traitement du message pour le destinataire. Pour en savoir plus, consultez le tableau 9.

Codes de réponse d'erreur des messages en aval

Le tableau suivant répertorie les codes de réponse d'erreur pour les messages en aval.

Tableau 9. Codes de réponse d'erreur des messages en aval.

Erreur HTTP Code Action recommandée
Jeton d'enregistrement manquant 200 + error:MissingRegistration Vérifiez que la requête contient un jeton d'enregistrement (dans registration_id dans un message en texte brut, ou dans le champ to ou registration_ids au format JSON).
Jeton d'enregistrement non valide 200 + error:InvalidRegistration Vérifiez le format du jeton d'enregistrement que vous transmettez au serveur. Assurez-vous qu'il correspond au jeton d'enregistrement que l'application cliente reçoit lors de son enregistrement auprès de Firebase Notifications. N'écourtez pas le code ni n'ajoutez de caractères supplémentaires.
Appareil non enregistré 200 + error:NotRegistered Un jeton d'enregistrement existant peut cesser d'être valide dans plusieurs cas, par exemple :
  • Si l'application cliente se désinscrit auprès de FCM.
  • Si l&#39;application cliente est automatiquement désenregistrée, ce qui peut se produire si l&#39;utilisateur désinstalle l&#39;application. Par exemple, sur iOS, si le service de commentaires APNs a signalé que le jeton APNs était non valide.
  • Si le jeton d'enregistrement expire (par exemple, Google peut décider d'actualiser les jetons d'enregistrement ou le jeton APN a expiré pour les appareils iOS).
  • Si l'application cliente est mise à jour, mais que la nouvelle version n'est pas configurée pour recevoir des messages.
Dans tous ces cas, supprimez ce jeton d'enregistrement du serveur de l'application et cessez de l'utiliser pour envoyer des messages.
Nom de package non valide 200 + error:InvalidPackageName Assurez-vous que le message a été adressé à un jeton d'enregistrement dont le nom de package correspond à la valeur transmise dans la requête.
Erreur d'authentification 401 Le compte de l'expéditeur utilisé pour envoyer un message n'a pas pu être authentifié. Voici les causes possibles :
  • L'en-tête d'autorisation est manquant ou sa syntaxe est incorrecte dans la requête HTTP.
  • Le projet Firebase auquel appartient la clé de serveur spécifiée est incorrect.
  • Clés de serveur anciennes uniquement : la requête provient d'un serveur qui ne figure pas dans la liste d'autorisation des adresses IP de la clé de serveur.
Vérifiez que le jeton que vous envoyez dans l'en-tête Authentication correspond à la clé de serveur associée à votre projet. Pour en savoir plus, consultez la section Vérifier la validité d'une clé de serveur. Si vous utilisez une ancienne clé de serveur, nous vous recommandons de passer à une nouvelle clé sans restriction d'adresses IP. Consultez la section Migrer les anciennes clés de serveur.
Expéditeur non concordant 200 + error:MismatchSenderId Un jeton d'enregistrement est associé à un certain groupe d'expéditeurs. Lorsqu'une application cliente s'inscrit pour FCM, elle doit spécifier les expéditeurs autorisés à envoyer des messages. Vous devez utiliser l'un de ces ID d'expéditeur lorsque vous envoyez des messages à l'application cliente. Si vous passez à un autre expéditeur, les jetons d'enregistrement existants ne fonctionneront pas.
JSON non valide 400 Vérifiez que le message JSON est correctement formaté et qu'il contient des champs valides (par exemple, assurez-vous que le bon type de données est transmis).
Paramètres non valides 400 + error:InvalidParameters Vérifiez que le nom et le type des paramètres fournis sont corrects.
Message trop volumineux 200 et plus : erreur :MessageTooBig Vérifiez que la taille totale des données de charge utile incluses dans un message ne dépasse pas les limites FCM: 4 096 octets pour la plupart des messages ou 2 048 octets pour les messages adressés aux sujets. Cela inclut à la fois les clés et les valeurs.
Clé de données non valide 200 + erreur :
InvalidDataKey
Vérifiez que les données de la charge utile ne contiennent pas de clé (telle que from, gcm ou toute valeur précédée du préfixe google) utilisée en interne par FCM. Notez que certains mots (comme collapse_key) sont également utilisés par FCM, mais sont autorisés dans la charge utile. Dans ce cas, la valeur de la charge utile sera remplacée par la valeur FCM.
Valeur TTL non valide 200 + error:InvalidTtl Vérifiez que la valeur utilisée dans time_to_live est un entier représentant une durée en secondes comprise entre 0 et 2 419 200 (4 semaines).
Délai avant expiration Erreur 5xx ou 200 et plus : indisponible

Le serveur n'a pas pu traiter la requête à temps. Réessayez la même requête, mais vous devez :

  • Respectez l'en-tête Retry-After s'il est inclus dans la réponse du serveur de connexion FCM.
  • Implémentez un intervalle exponentiel entre les tentatives dans votre mécanisme de nouvelle tentative. Par exemple, si vous avez attendu une seconde avant la première tentative, attendez au moins deux secondes avant la suivante, puis quatre secondes, et ainsi de suite. Si vous envoyez plusieurs messages, retardez chacun d'eux indépendamment d'une valeur aléatoire supplémentaire pour éviter d'émettre une nouvelle requête pour tous les messages en même temps.

Les expéditeurs qui causent des problèmes risquent d'être ajoutés à la liste noire.

Erreur interne du serveur 500 ou 200 + error:InternalServerError Le serveur a rencontré une erreur lors de la tentative de traitement de la demande. Vous pouvez réessayer la même requête en suivant les conditions requises indiquées sous "Délai avant expiration" (voir ligne ci-dessus). Si l'erreur persiste, veuillez contacter l'assistance Firebase.
Taux de messages de l'appareil dépassé Erreur 200 et plus :
DeviceMessageRate
dépassé

Le nombre de messages envoyés à un appareil spécifique est trop élevé. Si une application Apple envoie des messages à un débit supérieur aux limites APNs, elle peut recevoir ce message d'erreur.

Réduisez le nombre de messages envoyés à cet appareil et utilisez un intervalle exponentiel entre les tentatives d'envoi.

Nombre maximal de messages par sujet dépassé Erreur 200 et plus :
TopicsMessageRate
Excédé
Le nombre de messages envoyés aux abonnés d'un sujet particulier est trop élevé. Réduisez le nombre de messages envoyés pour ce sujet et utilisez un intervalle exponentiel entre les tentatives d'envoi.
Identifiants APNs non valides 200 + erreur :
InvalidApnsCredential
Un message ciblant un appareil Apple n'a pas pu être envoyé, car la clé d'authentification APNs requise n'a pas été importée ou a expiré. Vérifiez la validité de vos identifiants de développement et de production.

Gestion des groupes d'appareils

Le tableau suivant présente les clés permettant de créer des groupes d'appareils, et d'ajouter et de supprimer des membres. Pour en savoir plus, consultez le guide de votre plate-forme, iOS+ ou Android.

Tableau 10. Clés de gestion des groupes d'appareils.

Paramètre Utilisation Description
operation Obligatoire, chaîne Opération à exécuter. Les valeurs valides sont create, add et remove.
notification_key_name Obligatoire, chaîne Nom défini par l'utilisateur du groupe d'appareils à créer ou à modifier.
notification_key Obligatoire (sauf pour l'opération create, chaîne Identifiant unique du groupe d'appareils. Cette valeur est renvoyée dans la réponse d'une opération create réussie et est obligatoire pour toutes les opérations ultérieures sur le groupe d'appareils.
registration_ids Obligatoire, tableau de chaînes Les jetons d'appareil à ajouter ou à supprimer. Si vous supprimez tous les jetons d'enregistrement existants d'un groupe d'appareils, FCM le supprime.