Créer une API push

Poussez une notification ou un message vers un seul appareil ou une liste d'appareils. Le contenu envoyé ne peut être qu'un objet push représenté en JSON.

Ceci est la dernière version de l'API Push. Les améliorations de la version v4 sont :

  • Utilisation de l'authentification HTTP Basic pour l'autorisation d'accès. Ainsi, l'ensemble de la requête API peut être réalisée à l'aide d'outils HTTP courants, tels que : curl, extensions de navigateur, etc.
  • Le contenu push est entièrement au format JSON.

Limites de fréquence des requêtes

Notre API impose des limites de fréquence d'appel afin de garantir la stabilité et l'équité du service. Les limites QPS (requêtes par seconde) pour chaque AppKey sont les suivantes :

  • Limite standard : 500 requêtes maximum par seconde.
  • Limite avancée : Si vous êtes abonné à notre offre payante et que votre AppKey payant nécessite une limite QPS plus élevée, veuillez contacter notre équipe commerciale : Sales@engagelab.com.

Méthode de requête

POST

Adresse d'appel

L'adresse du service d'interface correspond point à point au point d'accès sélectionné du centre de données. Veuillez sélectionner l'adresse d'appel correspondant au point d'accès de service de votre application.

Actuellement, EngageLab a déployé et prend en charge deux points d'accès de centres de données, et les données entre différents points d'accès de service sont totalement isolées. Vous pouvez sélectionner l'adresse d'appel en fonction du point d'accès du centre de données choisi lors de la création du produit.

POST v4/push
              
              POST v4/push

            
Afficher ce bloc de code dans la fenêtre flottante

Validation de l'appel

Pour plus d'informations, consultez la vue d'ensemble de l'API REST dans la description de la Méthode d'authentification.

Exemple de requête

En-tête de requête

> POST /v4/push HTTP/1.1 > Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
              
              > POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==

            
Afficher ce bloc de code dans la fenêtre flottante

Corps de la requête

{ "from": "push", "to": "all", "body": { "platform": "all", "notification": { "alert" :"Hello, Push!", "android": { "alert": "Hi, Push!", "title": "Envoyer à Android", "builder_id": 1, "extras": { "newsid": 321 } }, "ios": { "alert": "Hi, MTPush!", "sound": "default", "badge": "+1", "extras": { "newsid": 321 } } }, "options": { "time_to_live": 60, "apns_production": false } }, "request_id": "12345678", "custom_args":{ "Engagelab": "push to you" } }
              
              {
    "from": "push",
    "to": "all",
    "body": {
        "platform": "all",
        "notification": {
            "alert" :"Hello, Push!",
            "android": {
                "alert": "Hi, Push!",
                "title": "Envoyer à Android",
                "builder_id": 1,
                "extras": {
                    "newsid": 321
                }
            },
            "ios": {
                "alert": "Hi, MTPush!",
                "sound": "default",
                "badge": "+1",
                "extras": {
                    "newsid": 321
                }
            }
        },
        "options": {
            "time_to_live": 60,
            "apns_production": false
        }
    },
    "request_id": "12345678",
    "custom_args":{
             "Engagelab": "push to you"
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de la requête

La structure des paramètres du push, comme détaillé dans le tableau suivant :

Mot-clé Type Option Signification
from String Optionnel Expéditeur du service actuel
to String ou Objet JSON Requis Cible d'envoi
body Objet JSON Requis Corps de la requête d'envoi
platform String ou Tableau JSON Requis Plateforme de push
notification Objet JSON Optionnel
  • Corps du contenu de la notification, qui est le contenu envoyé au client.
  • L'un ou l'autre doit être présent avec le message ; les deux ne peuvent pas coexister.
  • message Objet JSON Optionnel
  • Corps du contenu du message, qui est le contenu envoyé au client.
  • Avec notification, l'un ou l'autre doit être présent, et les deux ne peuvent pas coexister.
  • options Objet JSON Optionnel Paramètre de push
    request_id String Optionnel Champ optionnel défini par le client pour identifier quelle requête est retournée en réponse.
    custom_args Objet JSON Optionnel Champs optionnels définis par le client, retournés lors du callback. La valeur contient un maximum de 128 caractères.

    from

    Expéditeur du service actuel, de type String, champ optionnel.

    Exemple de requête

    { "from":"push" }
                  
                  {
        "from":"push"
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    to

    Objet Appareil Push, qui indique la liste des appareils vers lesquels un push peut être envoyé. Pour confirmer l'objet appareil push, App Push propose plusieurs méthodes, telles que : alias, tag, registration ID, sous-groupe, diffusion, etc.

    Cible de push

    Il existe plusieurs façons de choisir un équipement en dehors de la diffusion, comme suit :

    Mot-clé Type Signification Description Remarque
    all String Diffusion Push pour tous les appareils Le push cible les appareils qui ont été actifs au cours des 365 derniers jours.
    tag Tableau JSON Tag Tableaux. La relation entre plusieurs tags est OU, c'est-à-dire la concaténation. Utilisez les tags pour effectuer des sous-groupes d'attributs d'appareil ou d'utilisateur.
  • Push jusqu'à 20 à la fois.
  • Composition valide : lettres (sensible à la casse), chiffres, tirets bas, caractères chinois.
  • Limite : chaque tag est limité à 40 octets. (Encodage UTF-8 requis pour déterminer la longueur)
  • tag_and Tableau JSON Tag AND Tableau. Plusieurs tags sont en relation ET, c'est-à-dire qu'ils prennent l'intersection. À ne pas confondre avec tags, jusqu'à 20 à la fois.
    tag_not Tableau JSON Tag NOT Tableau. Entre plusieurs labels, l'ensemble fusionné est pris d'abord, puis le complémentaire pour ce résultat. Push jusqu'à 20 à la fois.
    alias Tableau JSON Alias Tableau. Plusieurs alias sont en relation OU, c'est-à-dire concaténation. Identifiez un utilisateur avec un alias.
  • Un appareil ne peut être lié qu'à un seul alias, et inversement.
  • Push jusqu'à 1000 à la fois.
  • Composition valide : lettres (sensible à la casse), chiffres, tirets bas, caractères chinois.
  • Limite : chaque alias est limité à 40 octets. (Encodage UTF-8 requis pour déterminer la longueur)
  • registration_id Tableau JSON ID d'inscription Tableau. Plusieurs IDs d'inscription sont en relation OU, c'est-à-dire concaténation. Identification de l'appareil. Push jusqu'à 1000 à la fois.
    live_activity_id String Identifiant d'activité en temps réel Correspond à la valeur de liveActivityId dans le SDK iOS. Doit être fourni lors de la mise à jour d'une activité en temps réel.
    seg JSON ID de segment utilisateur L'ID du groupe utilisateur créé sur la page. Défini comme un tableau, mais actuellement limité à un push à la fois. Actuellement, la limitation est qu'un seul push est possible à la fois.

    La relation implicite entre plusieurs valeurs dans un tableau est OU, c'est-à-dire la concaténation ; cependant, tag_and est différent car la relation entre plusieurs valeurs dans un tableau est ET, c'est-à-dire l'intersection.

    Si tag_not est utilisé seul, nous effectuerons le traitement tag_not parmi les utilisateurs en diffusion.

    Ces types peuvent coexister. La relation implicite entre plusieurs polynômes lors de la coexistence est ET, c'est-à-dire l'intersection. Par exemple :

    "to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }

    Calculez d'abord le résultat du champ "tag" tag1 ou tag2 = A ;

    Puis calculez le résultat du champ "tag_and" tag3 et tag4 = B ;

    Puis calculez le résultat du champ "tag_not" non (tag5 ou tag6) = C ;

    Le résultat final de "to" est A et B et C .


    Exemple

    • Push vers tous (diffusion) :
    { "to": "all" }
                  
                  {
      "to": "all"
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Push vers plusieurs tags (si l'un des tags est satisfait) : à Shenzhen, Guangzhou ou Pékin
    { "to":{ "tag":[ "Shenzhen", "Guangzhou", "Beijing" ] } }
                  
                  {
        "to":{
            "tag":[
                "Shenzhen",
                "Guangzhou",
                "Beijing"
            ]
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Push vers plusieurs tags (doit être dans la plage de plusieurs tags en même temps) : à Shenzhen et "femme"
    { "to":{ "tag_and":[ "Shenzhen", "female" ] } }
                  
                  {
        "to":{
            "tag_and":[
                "Shenzhen",
                "female"
            ]
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Push vers plusieurs alias :
    { "to":{ "alias":[ "4314", "892", "4531" ] } }
                  
                  {
        "to":{
            "alias":[
                "4314",
                "892",
                "4531"
            ]
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Push vers plusieurs IDs d'inscription :
    { "to": { "registration_id": [ "4312kjklfds2", "8914afd2", "45fdsa31" ] } }
                  
                  {
      "to": {
        "registration_id": [
          "4312kjklfds2",
          "8914afd2",
          "45fdsa31"
        ]
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Peut être poussé simultanément vers plusieurs types de cibles : à Shenzhen ou Guangzhou et sont "femmes" "membres"
    { "to":{ "tag":[ "Shenzhen", "Guangzhou" ], "tag_and":[ "female", "members" ] } }
                  
                  {
        "to":{
            "tag":[
                "Shenzhen",
                "Guangzhou"
            ],
            "tag_and":[
                "female",
                "members"
            ]
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    • Push d'un message d'activité en temps réel
    { "to": { "live_activity_id": "LiveActivity-1" } }
                  
                    {
          "to": {
              "live_activity_id": "LiveActivity-1"
          }
      }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Push vers un ID de segmentation utilisateur :

    { "to": { "seg": { "id":"segid" } } }
                  
                  {
      "to": {
        "seg": {
          "id":"segid"
        }
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Body

    Corps de la requête d'envoi. Les champs pris en charge sont les suivants :

    Mot-clé Type Options Signification
    platform String ou Tableau JSON Requis Plateforme de push
    notification Objet JSON Optionnel
  • Contenu de la notification, qui est le contenu envoyé au client.
  • Doit exister avec message, et les deux ne peuvent pas coexister.
  • message Objet JSON Optionnel
  • Contenu du message, qui est le contenu envoyé au client.
  • Doit exister avec notification, et les deux ne peuvent pas coexister.
  • live_activity Objet JSON Optionnel
  • Contenu du message d'activité en temps réel, qui est le contenu envoyé au client.
  • Doit exister avec notification ou message, et live_activity ne peut pas coexister avec notification ou message.
  • options Objet JSON Optionnel Paramètres de push

    Plateforme

    MTPush prend actuellement en charge le push pour les plateformes Android, iOS et HarmonyOS. Les mots-clés sont : "android", "ios", "hmos".

    Si la plateforme cible est iOS, vous devez définir l'environnement de push via le champ apns_production dans options. true signifie environnement de production, false signifie environnement de développement.

    Push vers toutes les plateformes :

    { "platform" : "all" }
                  
                  { "platform" : "all" }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Désignation de plateformes spécifiques :

    { "platform": [ "android", "ios", "hmos" ] }
                  
                  {
      "platform": [
        "android",
        "ios",
        "hmos"
      ]
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Notification

    L'objet "Notification", qui est l'un des objets de contenu d'une push (l'autre étant "Message"), est envoyé au client en tant que "Notification".

    Mot-clé Type Option Signification Description
    alert String ou Objet JSON Requis Contenu Le contenu du message lui-même. Si alert n'est pas spécifié sous android ou ios, il sera utilisé.
    android Objet JSON Optionnel Propriétés de la plateforme android Paramètres de push pour Android, voir description android
    ios Objet JSON Optionnel Propriétés de la plateforme ios Paramètres de push pour iOS, voir description ios
    hmos Objet JSON Optionnel Propriétés de la plateforme hmos Paramètres de push pour HarmonyOS, voir description hmos

    Alert

    La propriété "alert" à cet emplacement (directement sous l'objet notification) est une définition raccourcie, et si le message d'alerte est identique sur toutes les plateformes, l'alerte peut ne pas être définie sous la plateforme, et cette valeur primera. Si une définition est présente pour chaque plateforme, elle la remplacera.

    { "notification" : { "alert" : "Hello, Push!" } }
                  
                  {
      "notification" : {
        "alert" : "Hello, Push!"
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    L'objet notification défini ci-dessus sera envoyé vers plusieurs plateformes spécifiées par "platform" et toutes auront le même message d'alerte.

    Android

    Les notifications sur la plateforme Android sont affichées par le SDK MTPush selon des styles spécifiques de barre de notification. Les champs pris en charge sont les suivants :

    Mot-clé Type de données Optionnel Signification Description
    alert String ou Objet JSON Requis Contenu de la notification
  • Si spécifié, cela remplacera l'information d'alerte définie au niveau parent.
  • Le contenu peut être une chaîne vide pour indiquer qu'il ne doit pas être affiché dans la barre de notification.
  • Pour les limitations imposées par les différents canaux de push sur ce champ, veuillez consulter Limites de push.
  • title String Optionnel Titre de la notification
  • Si spécifié, il remplacera le nom de l'application dans l'affichage de la notification.
  • Pour les limitations imposées par les différents canaux de push sur ce champ, veuillez consulter Limite de push.
  • builder_id Int Optionnel ID du style de barre de notification Le SDK Android peut définir des mises en page personnalisées de notification, et ce champ spécifie quel style utiliser.
    channel_id String Optionnel ID du canal de notification Android Jusqu'à 1000 octets, à partir d'Android 8.0, vous pouvez configurer les canaux de notification. Ce champ spécifie l'effet d'affichage de la barre de notification selon l'ID du canal.
    priority Int Optionnel Priorité d'affichage de la barre de notification Par défaut 0, plage de -2 à 2.
    category String Optionnel Filtrage ou tri de l'entrée de la barre de notification Cela dépend entièrement de la stratégie de gestion du fabricant.
    style Int Optionnel Type de style de la barre de notification Permet de spécifier le type de style de la barre de notification, par défaut 0. 1=bigText, 2=Inbox, 3=bigPicture
    big_text String Optionnel Style de barre de notification grand texte
  • Disponible lorsque style = 1, le contenu sera affiché dans la barre de notification en grand texte.
  • Pris en charge sur les ROM avec API 16 ou supérieure.
  • inbox Objet JSON Optionnel Style de barre de notification liste de textes
  • Disponible lorsque style = 2, prend en charge jusqu'à 5 éléments, chaque élément ayant une longueur maximale de 1024.
  • Pris en charge sur les ROM avec API 16 ou supérieure.
  • big_pic_path String Optionnel Style de barre de notification grande image
  • Disponible lorsque style = 3, prend actuellement en charge les images JPEG (canal FCM uniquement), .BMP (canal FCM uniquement), .jpg et .png.
  • Pris en charge pour les URL d'images réseau, chemins d'images locaux (spécifiez le chemin relatif sur la carte SD).
  • Pris en charge sur les ROM avec API 16 ou supérieure.
  • La taille maximale des images est de 1 Mo.
  • extras Objet JSON Optionnel Champs supplémentaires Définissez des informations personnalisées Key/Value au format JSON pour un usage métier.
    intent Objet JSON Optionnel Spécifier la page cible de navigation (recommandé) Utilisez le champ intent pour spécifier la page cible à laquelle naviguer lors du clic sur la notification. Il est recommandé de remplir ce champ, sinon le clic sur la notification peut ne pas entraîner d'action de navigation. Ce champ prend en charge trois types :
  • Aller à la page cible : intent:#Intent;action=action path;component= nom du package /nom complet de l'activité;end
  • Aller à la page d'accueil de l'application : intent:#Intent;action=android.intent.action.MAIN;end (adresse fixe)
  • Aller à une adresse deeplink : scheme://test?key1=val1&key2=val2
  • large_icon String Optionnel Grande icône de notification
  • La taille de l'icône ne doit pas dépasser 300 Ko.
  • Pris en charge pour les URL d'images réseau, chemins d'images locaux (spécifiez le chemin relatif sur la carte SD).
  • small_icon String Optionnel Petite icône de notification
  • Petite icône de notification, le chemin de l'icône peut être une URL d'image réseau et ne doit pas dépasser 300 Ko.
  • Si small_icon_uri n'est pas renseigné, ce champ small_icon sera utilisé par défaut.
  • sound String Optionnel Son
  • Indiquez le nom du fichier son dans le chemin /res/raw/ du projet Android sans l'extension du fichier.
  • Remarque : Pour Android 8.0 et supérieur, cet attribut ne fonctionne pas lorsque channel_id est renseigné.
  • badge_add_num Int Optionnel Définir la valeur incrémentale du badge, à ajouter au badge d'origine
  • Ce champ ne fonctionne actuellement que pour Huawei EMUI 8.0 et supérieur, Xiaomi MIUI 6 et supérieur, et les appareils vivo lors de l'utilisation du canal fabricant.
  • Si ce champ n'est pas renseigné, cela signifie que le badge ne changera pas (pour Xiaomi, que le push passe par le canal Engagelab ou fabricant, il sera par défaut +1).
  • Plage de valeurs : 1-99. Si une valeur dans cette plage est définie, la donnée badge_add_num pour la prochaine configuration de message de barre de notification sera ajoutée au badge d'origine. Il est recommandé de mettre 1.
  • Exemple : Si badge_add_num est à 1 et que le badge d'origine est 2, après l'envoi de ce message badge, le badge de l'application affichera 3.
  • badge_set_num Int Optionnel Définir une valeur fixe pour le badge
  • Si ce champ n'est pas renseigné, cela signifie que le badge ne changera pas.
  • Plage de valeurs : 0-99. Si un nombre dans la plage est défini, le badge correspondant à la prochaine configuration de message de barre de notification sera la valeur du badge. Par exemple : si badge_set_num est à 1, quel que soit le badge précédent de l'application, après l'envoi de ce message badge, le badge de l'application affichera toujours 1.
  • badge_class String Optionnel Classe Activity d'entrée de l'application correspondant à l'icône du bureau, ex : "com.test.badge.MainActivity"
  • Valable uniquement pour le push canal Huawei. Si cette valeur est une classe Activity non principale, la logique de restriction du fabricant s'appliquera.
  • Pour la fonction d'incrémentation de badge, badge_add_num doit être utilisé conjointement ; les deux doivent coexister, l'un ne peut pas manquer.
  • display_foreground String Optionnel Application au premier plan, afficher ou non les notifications
  • Lorsque la valeur est "1", les notifications s'affichent dans la barre de notification lorsque l'application est au premier plan.
  • Lorsque la valeur est "0", les notifications ne s'affichent pas dans la barre de notification lorsque l'application est au premier plan.
  • Par défaut, les notifications s'affichent dans la barre de notification lorsque l'application est au premier plan. Pris en charge depuis MTPush Android SDK version 4.3.1.
  • group_id String Optionnel ID de groupe de message Identifiant unique pour le regroupement des messages, utilisé pour contrôler l'effet de regroupement. Pris en charge depuis MTPush Android SDK version 5.0.1.
    { "notification": { "android": { "alert": "hello, MTPush!", "title": "Test push", "builder_id": 3, "style": 1, "big_text": "contenu grand texte", "inbox": Objet JSON, "big_pic_path": "url image", "priority": 0, "category": "catégorie str", "large_icon": "http://pushapi-sgp.engagelab.comlargeIcon.jpg", "small_icon": "http://www.small.com/small_icon.jpg", "intent": { "url": "intent:#Intent;component=push.pushapi-sgp.engagelab.com/com.example.mtpushdemo.SettingActivity;end" }, "extras": { "news_id": 134, "my_key": "a value" } } } }
                  
                  {
        "notification": {
            "android": {
                "alert": "hello, MTPush!",
                "title": "Test push",
                "builder_id": 3,
                "style": 1,
                "big_text": "contenu grand texte",
                "inbox": Objet JSON,
                "big_pic_path": "url image",
                "priority": 0,
                "category": "catégorie str",
                "large_icon": "http://pushapi-sgp.engagelab.comlargeIcon.jpg",
                "small_icon": "http://www.small.com/small_icon.jpg",
                "intent": {
                    "url": "intent:#Intent;component=push.pushapi-sgp.engagelab.com/com.example.mtpushdemo.SettingActivity;end"
                },
                "extras": {
                    "news_id": 134,
                    "my_key": "a value"
                }
            }
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    icon
    Contactez-nous