API d'enregistrement des appareils

L'API d'enregistrement des appareils fournit des interfaces serveur pour enregistrer les tokens d'appareils et obtenir les registration_id dans AppPush.

Obtenir registration_id à l'aide d'un Token

Cette API permet à un serveur d'inscrire des utilisateurs AppPush à l'aide de FCM Tokens ou d'APNs Device Tokens et d'obtenir le registration_id généré par EngageLab. Une fois obtenu, le registration_id peut être utilisé pour cibler un utilisateur lors d'un push et avec les APIs liées aux appareils, telles que les tags et les alias.

Limites d'utilisation

  • Chaque requête permet d'inscrire de 1 à 500 Tokens.
  • Une requête ne peut contenir que les Tokens d'une seule plateforme : soit un lot de FCM Tokens, soit un lot d'APNs Device Tokens. Les Tokens FCM et APNs ne peuvent pas être mélangés dans une même requête.
  • Les requêtes répétées avec la même application, la même plateforme et le même Token sont idempotentes. Aucun utilisateur en double n'est créé et le registration_id existant est renvoyé.
  • Les résultats sont renvoyés dans le même ordre que les Tokens de la requête.

Endpoint

POST /v4/devices/token/registration_id
              
              POST /v4/devices/token/registration_id

            
Afficher ce bloc de code dans la fenêtre flottante

L'URL complète de la requête se compose de la Base URL du centre de données de l'application et du chemin ci-dessus. Pour les adresses des centres de données et l'authentification, consultez la Présentation de REST API.

En-têtes de la requête

Content-Type: application/json Accept: application/json Authorization: Basic base64_auth_string
              
              Content-Type: application/json
Accept: application/json
Authorization: Basic base64_auth_string

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de la requête

Nom Type Obligatoire Description
platform string Oui Plateforme à laquelle appartiennent les Tokens. Valeurs possibles : android et ios. Utilisez android pour les FCM Tokens.
tokens array<string> Oui Liste des Tokens à inscrire, contenant de 1 à 500 éléments. Tous les Tokens d'une requête doivent appartenir à la plateforme indiquée par platform.
apns_production boolean Obligatoire pour iOS Environnement APNs. true désigne l'environnement de production et false l'environnement de développement. Ce champ ne doit pas être inclus dans les requêtes Android.

Règles de format des Tokens

  • FCM Token : doit être une chaîne non vide de 400 caractères maximum. Seuls les caractères ASCII imprimables (0x210x7E) sont autorisés. Les espaces, retours à la ligne et espaces en début ou en fin de chaîne sont interdits.
  • APNs Device Token : doit être une chaîne hexadécimale non vide, comportant un nombre pair de caractères et ne dépassant pas 400 caractères. Seuls 0-9, a-f et A-F sont autorisés. Les espaces, chevrons et autres séparateurs sont interdits.

Cette API valide uniquement le format du Token et ne peut pas confirmer si un Token est actuellement valide. Sa validité est déterminée par le résultat réel du push FCM ou APNs.

Exemple de requête Android (FCM)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "android", "tokens": [ "fcm_token_1", "fcm_token_2" ] }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "android",
    "tokens": [
      "fcm_token_1",
      "fcm_token_2"
    ]
  }'

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de requête iOS (APNs)

curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \ -u 'appKey:masterSecret' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "platform": "ios", "tokens": [ "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" ], "apns_production": true }'
              
              curl -X POST 'https://pushapi-sgp.engagelab.com/v4/devices/token/registration_id' \
  -u 'appKey:masterSecret' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "platform": "ios",
    "tokens": [
      "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
    ],
    "apns_production": true
  }'

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de réponse

Nom Type Description
results array<object> Résultat de l'inscription de chaque Token, dans le même ordre que tokens dans la requête.
results[].token string Token de la requête.
results[].registration_id string Identifiant utilisateur unique EngageLab. Renvoyé lorsque le Token est inscrit avec succès.
results[].is_new boolean true indique qu'un utilisateur a été créé lors de cette requête ; false indique que le Token était déjà inscrit et que l'utilisateur existant a été renvoyé.
results[].code integer Code de traitement du Token individuel. 0 indique un succès et toute autre valeur indique un échec.
results[].message string Description de l'erreur lorsque le traitement d'un Token individuel échoue. Ce champ n'est pas renvoyé en cas de succès.

Codes de résultat individuels :

Code Description
0 Le Token a été inscrit avec succès.
21003 Le format du Token n'est pas valide.
27000 La consultation, l'inscription ou la synchronisation du Token a échoué.

Exemple de réponse réussie

Lors de la première inscription, is_new vaut true :

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": true, "code": 0 }, { "token": "fcm_token_2", "registration_id": "13065ffa4e1a6cc91c4", "is_new": true, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": true,
      "code": 0
    },
    {
      "token": "fcm_token_2",
      "registration_id": "13065ffa4e1a6cc91c4",
      "is_new": true,
      "code": 0
    }
  ]
}

            
Afficher ce bloc de code dans la fenêtre flottante

Lorsqu'un Token déjà inscrit est envoyé à nouveau, le même registration_id est renvoyé et is_new vaut false :

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    }
  ]
}

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple d'échec pour un Token individuel

Si un Token d'un lot présente un format non valide ou si son inscription échoue, cet élément renvoie une erreur dans code et message, tandis que les autres Tokens peuvent être traités normalement. Dans l'exemple suivant, le Token vide échoue à la validation du format :

{ "results": [ { "token": "fcm_token_1", "registration_id": "13065ffa4e1a6cc91c3", "is_new": false, "code": 0 }, { "token": "", "is_new": false, "code": 21003, "message": "invalid fcm token format" } ] }
              
              {
  "results": [
    {
      "token": "fcm_token_1",
      "registration_id": "13065ffa4e1a6cc91c3",
      "is_new": false,
      "code": 0
    },
    {
      "token": "",
      "is_new": false,
      "code": 21003,
      "message": "invalid fcm token format"
    }
  ]
}

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple d'échec de la requête

Si les paramètres globaux de la requête ne sont pas valides, l'API renvoie HTTP 400. Par exemple, une requête iOS sans apns_production renvoie :

{ "error": { "code": 21003, "message": "apns_production is required for ios" } }
              
              {
  "error": {
    "code": 21003,
    "message": "apns_production is required for ios"
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Erreurs de requête courantes :

  • platform n'est ni android ni ios ;
  • tokens est vide ou contient plus de 500 éléments ;
  • une requête Android contient apns_production ;
  • une requête iOS ne contient pas apns_production.

Réponses de l'API

Codes d'état HTTP

Consultez Code d'état HTTP.

Codes d'erreur

Le tableau suivant présente les codes d'erreur au niveau de la requête. Dans une requête par lot, l'erreur d'un Token individuel est renvoyée dans results[].code et results[].message et n'affecte pas le traitement des autres Tokens.

Code Description Détails HTTP Status Code
0 success La requête a réussi. Consultez results pour le résultat du traitement de chaque Token. 200
21003 Parameter value is invalid platform, tokens ou apns_production n'est pas valide. 400
21004 basic auth failed Le Master Secret est incorrect. 401
21008 app_key is not a 24 size string La longueur de l'AppKey n'est pas valide. 400
23010 Rate limit exceeded for the API L'AppKey actuel a dépassé la limite de fréquence de l'API. 400
27000 Server inner err Erreur interne du serveur. Réessayez plus tard. 500
27001 app_key does not exist or basic info is invalid Basic Auth n'a pas été fourni, l'AppKey n'existe pas ou les informations d'authentification de l'application ne sont pas valides. 401
27002 parameter is invalid Le corps de la requête est absent, le format JSON n'est pas valide ou le type d'un paramètre est incorrect. 400
Icon Solid Transparent White Qiyu
Contactez-nous