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

    iOS

    Notifications APNs sur la plateforme iOS.

    Le contenu de la notification est envoyé par l'agent MTPush au serveur Apple APNs et est présenté sur l'appareil iOS sous forme de notification système.

    Le contenu de la notification est conforme aux spécifications APNs et prend en charge les champs suivants :

    Mot-clé Type Option Signification Description
    alert String ou JSON Object Obligatoire Contenu de la notification
  • Le contenu spécifié ici remplacera le message d'alerte spécifié par le parent.
  • Si le contenu est vide, il n'est pas affiché dans la barre de notification.
  • Le format chaîne est pris en charge ainsi que la structure alert payload officiellement définie, qui contient les clés officiellement prises en charge comme title et subtitle.
  • sound String ou JSON Object Optionnel Son de notification
  • Notification générale : type String.
  • Si ce champ n'est pas présent, il n'y a pas d'alerte sonore pour ce message.
  • Avec ce champ, le son spécifié est joué s'il est trouvé, sinon le son par défaut est joué.
  • Si ce champ est une chaîne vide, iOS 7 utilise le son par défaut, iOS 8 et supérieur n'a pas de son.
  • Notification d'alerte : JSON Object, qui prend en charge la structure payload officiellement définie contenant les clés officiellement prises en charge comme critical, name et volume.
  • badge Int ou String Optionnel Badge de l'application
  • La valeur de N peut être définie sur N, +N ou -N, et la valeur de N est dans la plage [0,99]. Si la valeur transmise est 10, le badge sera défini sur N, 10+N, 10-N (le badge est effacé par défaut si la valeur est inférieure à 0).
  • 0 ou chaîne vide signifie effacer le badge.
  • Si non renseigné, les numéros de badge ne sont pas modifiés.
  • La bibliothèque API officielle MTPush (SDK) remplit par défaut la valeur du badge à "+1".
  • content-available Boolean Optionnel Réveil par push Pour plus de détails, référez-vous à : "content-available":true lors du push signifie qu'il s'agit d'une Background Remote Notification, sinon c'est une Remote Notification normale :Background Remote Notification
    mutable-content Boolean Optionnel Extension de notification Fonctionnalité Notification Service Extension ajoutée à iOS 10 pour signaler l'état de livraison de chaque message APNs, l'utilisation de cette fonctionnalité nécessite que le client implémente l'interface Service Extension et utilise le champ mutable-content côté serveur pour compléter la configuration.
  • true : Indique la prise en charge de la fonctionnalité UNNotificationServiceExtension d'iOS 10.
  • Si ce champ n'est pas transmis, c'est une Remote Notification normale et aucune donnée d'arrivée ne peut être comptabilisée.
  • category String Optionnel Uniquement pris en charge dans iOS 8. Définit la valeur du champ "category" dans le payload APNs.
    extras JSON Object Optionnel Champs étendus Les informations Key/value ici sont personnalisées pour une utilisation métier.
    thread-id String Optionnel Groupe de notifications Les notifications distantes iOS sont regroupées par cette propriété, de sorte que les notifications avec le même thread-id sont regroupées ensemble.
    interruption-level String Optionnel Niveaux de perturbation des notifications pour la priorité et les délais de livraison Pour iOS 15, le niveau de notification ne peut être qu'un parmi active, critical, passive, timeSensitive, référez-vous à :UNNotificationInterruptionLevel.

    Les notifications iOS de MTPush sont transférées aux serveurs APNs. La longueur des notifications dans MTPush est limitée à 4000 octets. MTPush utilise l'encodage utf-8 lors du push, donc un caractère chinois occupe 3 octets en longueur.

    Exemple d'envoi côté serveur :

    { "notification": { "ios": { "alert": "hello, Push!", "sound": "sound.caf", "badge": 1, "extras": { "news_id": 134, "my_key": "a value" } } } }
                  
                  {
        "notification": {
            "ios": {
                "alert": "hello, Push!",
                "sound": "sound.caf",
                "badge": 1,
                "extras": {
                    "news_id": 134,
                    "my_key": "a value"
                }
            }
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Message reçu par le client :

    { "_j_msgid" = 813843507; aps = { alert = "hello,Push!"; badge = 1; sound = "sound.caf"; }; "my_key" = "a value"; "news_id" = 134; }
                  
                  {
      "_j_msgid" = 813843507;
      aps =     {
      alert = "hello,Push!";
      badge = 1;
      sound = "sound.caf";
    };
    "my_key" = "a value";
    "news_id" = 134;
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    hmos

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

    Mot-clé Type Option Signification Description
    alert String Obligatoire Contenu de la notification Remplace l'alerte parent si défini. Une chaîne vide masque la notification de la barre. Voir Limitations de push pour les limites.
    title String Optionnel Titre de la notification Remplace le nom de l'application si défini. Voir Limitations de push.
    category String Obligatoire Catégorie de message Obligatoire par le fabricant. Suivre les normes de catégorie de message Harmony. Correspond à notification.hmos.category.
    large_icon String Optionnel Grande icône URL HTTPS uniquement, ex. https://example.com/image.png. ≤30 Ko, largeur*hauteur < 12800 pixels.
    intent JSON Object Obligatoire Cible de navigation Trois types pris en charge : 1) Accueil app : action.system.home 2) Deeplink : scheme://host?key=val 3) Action : com.test.action. Exemple : {"url":"action.system.home"}.
    badge_add_num Int Optionnel Incrément de badge Si omis, ne change pas le badge. Plage 1-99. Ajoute au badge actuel.
    badge_set_num Int Optionnel Valeur fixe de badge Si omis, ne change pas le badge. Plage 0-99. Définit le badge à une valeur fixe.
    test_message Boolean Optionnel Indicateur de message de test false : normal (par défaut) ; true : message de test.
    receipt_id String Optionnel ID de réception Huawei ID unique pour spécifier la configuration de réception Harmony.
    extras JSON Object Optionnel Champs supplémentaires JSON K/V personnalisé pour utilisation métier.
    style Int Optionnel Style de notification Par défaut 0. 0 : normal ; 3 : texte multi-lignes.
    inbox_content String[] Optionnel Contenu texte multi-lignes Obligatoire lorsque style=3. Jusqu'à 3 éléments. Chaque ≤1024 caractères ; tronqué avec "…".
    push_type Int Optionnel Type de push Par défaut 0. Pris en charge : 0-notification, 2-notification étendue, 10-appel VoIP. Autres invalides.
    extra_data String Optionnel Données étendues Correspond au extraData de Huawei. Obligatoire lorsque push_type=2 ou 10 ; ignoré lorsque push_type=0.
    display_foreground String Optionnel Afficher la notification quand l'app est au premier plan "1" : afficher ; "0" : ne pas afficher.

    Exemple :

    { "notification": { "hmos": { "alert": "Hi, MTPush!", "title": "", "category": "", "intent": {"url": ""}, "badge_add_num": 1, "test_message": true, "receipt_id": "", "extras": {}, "style": 0, "inbox_content": [], "push_type": 0, "extra_data": "", "display_foreground": "1" } } }
                  
                  {
      "notification": {
        "hmos": {
          "alert": "Hi, MTPush!",
          "title": "",
          "category": "",
          "intent": {"url": ""},
          "badge_add_num": 1,
          "test_message": true,
          "receipt_id": "",
          "extras": {},
          "style": 0,
          "inbox_content": [],
          "push_type": 0,
          "extra_data": "",
          "display_foreground": "1"
        }
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Message

    Messages in-app. Également appelés : messages personnalisés, messages pass-through.

    • Cette partie n'est pas affichée dans la barre de notification, le SDK MTPush reçoit le contenu du message et le transmet à l'application.
    • iOS obtient cette partie dans un canal de message in-app push (pas APNS) avec l'application au premier plan.

    Les champs pris en charge sont les suivants :

    Mot-clé Type Option Signification
    msg_content String ou JSON Object Obligatoire Contenu du message
    title String Optionnel Titre du message
    content_type String Optionnel Type de contenu du message
    extras JSON Object Optionnel Paramètres optionnels au format JSON
    test_message Boolean Optionnel Indicateur de message de test, pour utilisation HarmonyOS
    receipt_id String Optionnel ID de réception Huawei, pour utilisation HarmonyOS

    Exemple :

    { "message": { "msg_content": "Hi,Push", "content_type": "text", "title": "msg", "extras": { "key": "value" } } }
                  
                  {
      "message": {
        "msg_content": "Hi,Push",
        "content_type": "text",
        "title": "msg",
        "extras": {
          "key": "value"
        }
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Live_activity

    Remarque : Les messages d'activité en temps réel nécessitent l'utilisation d'un certificat iOS P8, qui correspond à la sélection de « Configuration d'authentification par token » dans les paramètres de méthode d'authentification iOS du WebPortal.

    Le corps du contenu des messages d'activité en temps réel comprend les informations de champ suivantes :

    Mot-clé Type Options Description
    ios JSON Object Obligatoire Pour les champs détaillés, référez-vous à la section iOS JSON Object.

    iOS JSON Object

    Mot-clé Type Options Description
    event string Obligatoire Création : "start", Mise à jour : "update", Fin : "end" ; obligatoire lorsque event=start
    attributes-type string Optionnel Type d'activité en temps réel, une valeur définie par le développeur ; obligatoire lorsque event=start
    content-state JSON Object Obligatoire Contenu dynamique de l'activité en temps réel, doit correspondre à la valeur du SDK client (correspond au champ content-state d'Apple).
    alert JSON Object Optionnel Référez-vous à iOS alert JSON Object pour plus de détails.
    dismissal-date int Optionnel Temps d'affichage pour la fin de l'activité en temps réel.
    attributes JSON Object Optionnel Contenu statique de l'activité en temps réel, doit correspondre à la valeur du SDK client (correspond au champ attributes d'Apple).
    stale-date int Optionnel Délai d'expiration pour l'affichage de l'activité en temps réel ; si inférieur à l'heure actuelle, l'activité ne se mettra pas à jour.
    relevance-score int Optionnel Priorité d'affichage de l'activité en temps réel sur Dynamic Island, valeurs de 1 à 100, corrélées positivement avec l'importance de l'activité ; par défaut la plus élevée si non spécifié.
    apns-priority int Optionnel 5 ou 10, par défaut 10 ; les notifications avec apns-priority=5 ne consommeront pas la limite de débit d'Apple, dépasser la limite restreindra les notifications.

    iOS alert JSON Object

    Mot-clé Type Options Description
    title string Optionnel Titre affiché sur les messages Apple Watch.
    body string Optionnel Contenu affiché sur les messages Apple Watch.
    sound string Optionnel Son de notification.
    • Les messages d'activité en temps réel iOS pour Engagelab Push sont transférés aux serveurs Apple. Apple exige que les données de mise à jour dynamique pour les messages d'activité en temps réel (ActivityKit) ne dépassent pas 4096 octets.
    • Engagelab Push, en raison des exigences de reconditionnement et en tenant compte de la redondance de sécurité, stipule que la longueur totale dans les paramètres "live_activity" pour "iOS" : { } et le contenu entre les accolades ne doit pas dépasser 3584 octets. JPush utilise l'encodage UTF-8, ce qui signifie qu'un caractère chinois occupe 3 octets.

    Exemple de push d'activité en temps réel

    Le attributes-type et le live_activity_id utilisés pour les activités en temps réel sont rapportés depuis le SDK développeur. Avant d'utiliser les activités en temps réel, le push-to-start token et le update-token de l'appareil doivent être rapportés. Pour les procédures détaillées, référez-vous aux instructions du fabricant Apple sur les activités en temps réel.

    • Créer

      { "from": "push", "to": { "registration_id": [ "161a3797c816b134042" ] }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "start", "content-state": { "eventStr": "hello", "eventTime":1685952000 }, "attributes": { "name": "1", "number": 2, "tag": "mytag" }, "alert": { "title": "hello", "body": "welcome" }, "attributes-type": "my_la_type", "relevance-score": 100, "apns-priority": 100 } } }, "request_id": "12345678", "custom_args": "12345678" }
                    
                    {
          "from": "push",
         "to": {
              "registration_id": [
                  "161a3797c816b134042"
              ]
          },
          "body": {
              "platform": "ios",
              "live_activity": {
                  "ios": {
                      "event": "start",
                      "content-state": {
                          "eventStr": "hello",
                          "eventTime":1685952000
                      },
                      "attributes": {
                          "name": "1",
                          "number": 2,
                          "tag": "mytag"
                      },
                      "alert": {
                          "title": "hello",
                          "body": "welcome"
                      },
                      "attributes-type": "my_la_type",
                      "relevance-score": 100,
                      "apns-priority": 100
                  }
              }
          },
          "request_id": "12345678",
          "custom_args": "12345678"
      }
      
                  
      Afficher ce bloc de code dans la fenêtre flottante
    • Mettre à jour

      { "from": "push", "to": { "live_activity_id": "my_la_id" }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "update", "content-state": { "eventStr": "test_live", "eventTime": 198 }, "alert": { "title": "123411", "body": "123411" } } } }, "request_id": "12345678", "custom_args": "12345678" }
                    
                    {
         "from": "push",
         "to": {
               "live_activity_id": "my_la_id"
          },
          "body": {
              "platform": "ios",
              "live_activity": {
                  "ios": {
                      "event": "update",
                      "content-state": {
                          "eventStr": "test_live",
                          "eventTime": 198
                      },
      
                      "alert": {
                          "title": "123411",
                          "body": "123411"
                      }
                  }
              }
          },
          "request_id": "12345678",
          "custom_args": "12345678"
      }
      
                  
      Afficher ce bloc de code dans la fenêtre flottante

    Voip

    Fonction iOS VOIP. Ce type ne prend pas en charge la coexistence avec d'autres types de messages iOS. Référez-vous à la structure des paramètres de requête :

    { "from": "push", "to": { "registration_id": [ "1a0018970a91da03de5" ] }, "request_id": "12345", "custom_args": "12345", "body": { "platform": "ios", "voip": { "key": "value // Toute paire clé/valeur personnalisée qui sera transmise à l'APP" } } }
                  
                  { 
        "from": "push", 
        "to": { 
            "registration_id": [ "1a0018970a91da03de5" ] 
        }, 
        "request_id": "12345", 
        "custom_args": "12345", 
        "body": { 
            "platform": "ios", 
            "voip": { 
                "key": "value // Toute paire clé/valeur personnalisée qui sera transmise à l'APP" 
            } 
        } 
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Options

    Les options actuelles de notification push comprennent les éléments suivants :

    Mot-clé Type Option Signification Description
    time_to_live Int ou String Optionnel Durée de rétention des messages hors ligne (secondes) Si l'utilisateur est hors ligne au moment du push, le message peut être conservé pendant une durée spécifiée pour être poussé à nouveau lorsqu'il se connecte. Par défaut 86400 (1 jour), maximum 15 jours. Si le maximum pris en charge par l'opérateur est inférieur à la valeur définie, le maximum de l'opérateur est utilisé. Définir à 0 signifie que les messages hors ligne ne sont pas conservés ; seuls les utilisateurs en ligne au moment du push recevront le message.
    override_msg_id Long Optionnel ID du message à remplacer Si le push actuel est destiné à remplacer un précédent, entrer le msg_id du push précédent aura pour effet de le remplacer. Ce champ est uniquement efficace pour Android et ne prend en charge que le canal Engagelab, le canal Xiaomi, le canal Meizu, le canal OPPO, le canal FCM et le canal Huawei (appareils EMUI10 et supérieur).
    apns_production Boolean Optionnel Environnement de production APNs Ce champ est uniquement valide pour les notifications iOS.
  • true : Push vers l'environnement de production ;
  • false : Push vers l'environnement de développement.
  • Règles de valeur par défaut : Si "Certificat pour le développement" est activé dans la configuration, le champ est par défaut false lorsqu'il n'est pas explicitement défini. Sinon, il est par défaut true lorsqu'il est omis. Il est fortement recommandé de spécifier explicitement la valeur de ce champ dans les requêtes push.
  • apns_collapse_id String Optionnel Identifiant pour mettre à jour les notifications iOS Si une nouvelle notification APNs correspond à une notification existante dans le Centre de notifications avec le même apns-collapse-id, le contenu de la nouvelle notification la mettra à jour et la placera en haut du Centre de notifications. L'id de regroupement ne doit pas dépasser 64 octets.
    big_push_duration Int Optionnel Durée de push cadencé (minutes) Également connu sous le nom de push lent, il réduit la vitesse de push rapide d'origine, distribuant le push uniformément aux utilisateurs cibles sur les n minutes spécifiées ; le maximum est 1440.
    multi_language json object Optionnel Paramètres de push multilingue Paramètres d'adaptation pour le contenu push multilingue, voir multi_language pour plus de détails.
    third_party_channel JSON Object Optionnel Informations de configuration du canal fabricant Android Paramètres uniquement valides pour les utilisateurs configurés avec des canaux fabricants, voir third_party_channel pour plus de détails.
    classification Int Optionnel Paramètre de classification des messages push EngageLab ne juge ni ne calibre le type de message spécifié. Si non spécifié, la valeur par défaut est 0. 0 : Représente les messages opérationnels. 1 : Représente les messages système.
    voice_value String Optionnel Valeur du fichier vocal Plusieurs paramètres sont séparés par des virgules, avec '#' indiquant le besoin d'analyse ; sinon, il correspond directement au fichier de langue par défaut. Les langues actuellement prises en charge sont "en" (anglais), "zh-Hans" (chinois simplifié) et "zh-Hant" (chinois traditionnel).
    enhanc_message Bool Optionnel Activer l'affichage des messages in-app true - activer l'amélioration ; false - désactiver l'amélioration. Si les autorisations de notification sont désactivées, l'activation de cette fonctionnalité affichera le contenu du message de la barre de notification comme un message in-app lorsque l'utilisateur exécute l'application au premier plan. La valeur par défaut est false.
    plan_id String Optionnel Identifiant de plan push Vous devez d'abord créer l'identification du plan. Il peut être créé sur la console ou via l'API.
    cid String Optionnel Identifiant de requête push, utilisé pour empêcher les pushs en double Seuls les lettres, chiffres, underscores et tirets sont autorisés, et la longueur ne dépasse pas 64 caractères. Ce champ doit être unique sous le même AppKey. Comment éviter les pushs en double
    auto_truncation bool Optionnel Si les messages trop longs pour le canal fabricant doivent être automatiquement tronqués Par défaut true. Si le corps du message envoyé au canal fabricant est trop long, il sera automatiquement tronqué. Si la troncation n'est pas souhaitée, vous pouvez passer false.

    Multi_language

    Ce champ est destiné à la fonctionnalité de push multilingue du service EngageLab Push. Il vous permet d'envoyer un contenu de notification personnalisé aux utilisateurs dans différentes langues. En spécifiant plusieurs langues avec leur contenu de message, titres et sous-titres iOS correspondants dans la requête push, vous pouvez envoyer des notifications push appropriées basées sur les paramètres de langue de l'utilisateur.

    Paramètres de requête
    Mot-clé Type Options Signification Description
    en string Optionnel Clé de langue Correspond à la langue de l'utilisateur, voir l'annexe pour les codes clés.
    content string Optionnel Contenu du message Remplace les données dans notification.android.alert, notification.ios.alert, notification.web.alert et message.msg_content en fonction de la langue de l'utilisateur.
    title string Optionnel Titre du message Remplace les données dans notification.android.title, notification.ios.alert, notification.web.title et message.title en fonction de la langue de l'utilisateur.
    ios_subtitle string Optionnel Sous-titre iOS Remplace les données dans notification.ios.alert en fonction de la langue de l'utilisateur.
    • Remarque HarmonyOS : Lors de l'utilisation de HarmonyOS, utilisez third_party_channel.hmos.distribution_new. Il n'est pas affecté par la configuration globale.
    Exemple de requête
    HTTP Request Method: POST Request URL: /v4/grouppush or /v4/push Request Data Format: JSON Exemple de requête : { "options": { "multi_language": { "en": { "content": "", "title": "", "ios_subtitle": "" } } } }
                  
                     HTTP Request Method: POST
       Request URL: /v4/grouppush or /v4/push
       Request Data Format: JSON
       Exemple de requête :
       {
        "options": {
          "multi_language": {
            "en": {
              "content": "",
              "title": "",
              "ios_subtitle": ""
            }
          }
        }
       }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    Exemple de réponse
    Réponse réussie : { }
                  
                  Réponse réussie :
    {
       
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante
    Réponse échouée : { "code": 400, "data": "", "message": "Message d'erreur" }
                  
                  
    Réponse échouée :
    {   
        "code": 400,  
        "data": "",
      "message": "Message d'erreur"
    }   
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Third_party_channel

    Ce champ est utilisé pour remplir les informations personnalisées du canal fabricant Android, la clé prend en charge ces canaux fabricants : xiaomi, huawei, meizu, oppo, vivo, fcm, honor, hmos. Un ou plusieurs d'entre eux peuvent exister en même temps, la CLÉ de chaque type de fabricant peut actuellement contenir les options suivantes :

    Paramètres de requête
    Mot-clé Type Option Signification Description
    distribution_new String Obligatoire _ Lorsque les canaux Engagelab et fabricant coexistent, définir la priorité de distribution.
  • mtpush : le push est forcé via le canal Engagelab.
  • pns_mtpush : pour les utilisateurs de type combinaison fcm+fabricant domestique, le push est forcé vers Xiaomi/Huawei/Meizu/OPPO/Vivo/Honor d'abord, puis Engagelab si invalide.
  • mtpush_pns : push prioritaire vers Engagelab, puis canal fabricant si hors ligne.
  • fcm_mtpush : push forcé vers FCM d'abord, puis Engagelab si invalide.
  • mtpush_fcm : push prioritaire vers Engagelab, puis FCM si hors ligne. ``_Remarque : Pour les quatre stratégies pns_mtpush/fcm_mtpush/mtpush_pns/mtpush_fcm, si un appareil n'a qu'un seul canal push système disponible (soit FCM soit le canal du fabricant), les stratégies FCM et fabricant spécifiées seront ignorées, et le canal système intégré avec succès sera utilisé.
  • channel_id String Optionnel Catégories de messages de la barre de notification
  • Pour s'adapter à la catégorisation des notifications Xiaomi, Huawei et OPPO, les développeurs doivent faire une demande auprès des fabricants respectifs. Voir : Guide de catégorisation des notifications fabricant.
  • Remarque : Les applications dont les données sont traitées en région Chine pour Huawei ne prennent pas en charge ce champ. Voir Canaux de notification personnalisés Huawei.
  • Le champ channel_id est également disponible sur Android. Si ce champ est rempli, il aura la priorité ; sinon, la définition de android.channel_id s'appliquera.
  • Important : OPPO appliquera de nouvelles règles de catégorisation des notifications à partir du 20 novembre 2024, il est recommandé de remplir ce champ avec les champs category et notify_level ci-dessous.
  • classification Int Optionnel Catégories de messages de la barre de notification Catégorie de message de la barre de notification du fabricant vivo, par défaut 0.
  • 0 : message opérationnel.
  • 1 : message système. ``vivo est actuellement plus strict dans la classification des messages système, voir : plateforme développeur vivo pour les règles spécifiques.
  • pushMode Int Optionnel Mode push vivo Par défaut 0. Voir vivo pushMode. Pour utiliser le push de test, vous devez configurer manuellement l'ID de l'appareil de test dans le backend vivo.
  • 0 : Push officiel.
  • 1 : Push de test.
  • importance String Optionnel Classification intelligente des messages de la barre de notification Huawei/Honor Pour s'adapter à la classification intelligente des messages de la barre de notification Huawei, correspondant au champ importance de Huawei, par défaut "NORMAL", référence : Classification intelligente des notifications Huawei.
  • LOW : Message général.
  • NORMAL : Message important.
  • HIGH : Message très important (pris en charge uniquement par Huawei)
  • urgency String Optionnel Priorité des messages personnalisés fabricant Huawei Pour adapter la priorité des messages personnalisés du fabricant Huawei.
  • HIGH : Messages très importants, les messages de niveau HIGH peuvent forcer le réveil du processus de l'application.
  • NORMAL : Message important. ``Pour définir "HIGH", vous devez demander une autorisation spéciale auprès de Huawei, voir : Comment demander une autorisation spéciale.
  • category String Optionnel Logo de scénario de message personnalisé fabricant Huawei Pour s'adapter aux exigences de notification Huawei, vivo et OPPO, ce champ est utilisé pour identifier le type de message "notification cloud", déterminer les méthodes d'alerte de notification et accélérer la livraison de certains types de messages.
  • Voir les valeurs et descriptions : Description des valeurs category Huawei, Normes de classification vivo.
  • Description des valeurs category OPPO
  • Remarque 1 : Huawei nécessite la complétion de la demande de droits de catégorisation personnalisée.
  • Remarque 2 : À partir du 15 septembre 2023, Huawei gérera conjointement les notifications cloud et locales sous les Normes de classification des notifications Huawei.
  • Remarque 3 : Pour les règles spécifiques à vivo, voir la documentation officielle vivo.
  • Remarque 4 : OPPO appliquera de nouvelles règles à partir du 20 novembre 2024. Voir la documentation officielle OPPO.
  • notify_level Int Optionnel Niveaux d'alerte des messages de la barre de notification OPPO
  • Valeurs officielles : 1 pour Barre de notification, 2 pour Barre de notification + écran de verrouillage, 16 pour Barre de notification + écran de verrouillage + bannière + vibration + sonnerie.
  • Le champ notify_level ne s'applique qu'aux messages "Service et Communication".
  • Lors de l'utilisation du paramètre notify_level, le paramètre category doit être inclus.
  • small_icon_uri String Optionnel Style de petite icône pour les messages fabricant
  • Prend actuellement en charge les fabricants Xiaomi / Huawei.
  • Priorité au champ fabricant, si non rempli, utiliser small_icon dans android.
  • Xiaomi prend en charge ID de grande icône fabricant Xiaomi media_id et chemin local du fabricant pour Huawei, pris en charge par Engagelab. (Xiaomi ne prend officiellement plus en charge les petites icônes personnalisées).
  • small_icon_color String Optionnel Couleur du style de petite icône fabricant Xiaomi Pour adapter la couleur du style de petite icône des messages du fabricant Xiaomi, par défaut gris si non rempli (Xiaomi ne prend officiellement plus en charge les petites icônes personnalisées).
    big_text String Optionnel Style de texte large pour les messages fabricant
  • Pour s'adapter au style de texte large des messages fabricant, prend actuellement en charge Huawei / Honor / Xiaomi / OPPO, où Xiaomi et OPPO prennent en charge jusqu'à 128 caractères.
  • Si le champ fabricant n'est pas rempli, le champ big_text dans android est utilisé.
  • Utilisé lorsque le champ style=1 dans android.
  • only_use_vendor_style Boolean Optionnel Utiliser uniquement le style défini dans son propre canal Utiliser uniquement le style défini dans son propre canal, pas celui défini dans android, par défaut false.
  • true : utiliser uniquement le style défini par son propre canal.
  • false : peut utiliser le style défini dans android.
  • big_picture_id String Optionnel ID de grande image OPPO
  • Obligatoire lorsque style=3 (grande image). Obtenir via l'API de téléchargement d'image, puis utiliser l'ID retourné ici.
  • small_picture_id String Optionnel ID de petite icône OPPO
  • Obtenir via l'API de téléchargement d'image pour petite icône, puis utiliser l'ID retourné ici.
  • Pour unifier les stratégies multi-canaux fabricants et simplifier la logique de configuration, la méthode de configuration du champ distribution_new est ajustée comme suit. Vos configurations héritées au niveau fabricant resteront effectives, mais il est recommandé de migrer progressivement vers les configurations globales pour éviter les risques de compatibilité futurs. (Les nouvelles règles entreront en vigueur à partir du 2025.04.03) :

    • Priorité de configuration (Nouvelles règles)
      • Première priorité : Configuration globale third_party_channel.distribution_new (Nouvelle méthode recommandée)
        Exemple : "distribution_new": "pns_mtpush"
      • Deuxième priorité : Configuration au niveau fabricant third_party_channel.{vendor_key}.distribution_new (Méthode compatible héritée)
        Ne prend effet que lorsque la configuration globale n'est pas définie
      • Aucune configuration : stratégie par défaut : pns_mtpush

    Notes de compatibilité

    • Garantie de compatibilité : Les configurations héritées au niveau fabricant fonctionneront toujours si le champ global n'est pas défini, garantissant aucun impact sur les services existants.
    • Résolution de conflit : Si les champs global et au niveau fabricant sont tous deux configurés, seule la valeur globale sera lue, et les configurations au niveau fabricant seront ignorées.
    • Plan à long terme : Le distribution_new au niveau fabricant pourrait être supprimé dans les versions futures. Veuillez vous adapter à l'avance si possible.
    Exemple de requête
    { "third_party_channel": { "distribution_new": "pns_mtpush", "xiaomi": { "channel_id": "*******", "small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png", "small_icon_color": "#ABCDEF" }, "huawei": { "importance": "NORMAL", "small_icon_uri": "https://xx.com/xx.jpg", "only_use_vendor_style": true }, "oppo": { "channel_id": "*******", "big_picture_id": "", "small_picture_id": "" }, "vivo": { "pushMode": 0 }, "hmos": { "distribution_new": "pns_mtpush" } } }
                  
                  {
        "third_party_channel": {
            "distribution_new": "pns_mtpush",
            "xiaomi": {
                "channel_id": "*******",
                "small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png",
                "small_icon_color": "#ABCDEF"
            },
            "huawei": {
                "importance": "NORMAL",
                "small_icon_uri": "https://xx.com/xx.jpg",
                "only_use_vendor_style": true
            },
            "oppo": {
                "channel_id": "*******",
                "big_picture_id": "",
                "small_picture_id": ""
            },
            "vivo": {
                "pushMode": 0
            },
            "hmos": {
                "distribution_new": "pns_mtpush"
            }
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Request_id

    ID de requête, un champ optionnel défini par le client. Utilisé par le client pour identifier quelle requête est en cours et retourné dans la réponse.

    Exemple de requête

    { "request_id":"12345678" }
                  
                  {
          "request_id":"12345678"
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Exemple de retour

    { "msg_id": "1225764", "request_id": "12345678" }
                  
                  {
        "msg_id": "1225764",
        "request_id": "12345678"
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Custom_args

    Défini par le client, champ optionnel qui n'est pas retourné dans la réponse et est retourné dans le callback.

    Exemple de requête

    { "custom_args":{ "args1": "args1" } }
                  
                  {
      "custom_args":{
        "args1": "args1"
      }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Paramètres de retour

    Retour réussi

    Champ Type Option Description
    request_id String Optionnel L'ID personnalisé soumis lors de la requête est retourné tel quel dans la réponse.
    message_id String Obligatoire ID du message, qui identifie de manière unique un message.
    < HTTP/1.1 200 OK < Content-Type: application/json {"request_id":"18","msg_id":"1828256757"}
                  
                  < HTTP/1.1 200 OK
    < Content-Type: application/json
    {"request_id":"18","msg_id":"1828256757"}
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Retour en échec

    Le code de statut http est 4xx ou 5xx et le corps de la réponse contient les champs suivants :

    Champ Type Option Description
    code int Obligatoire Code d'erreur, voir la description du Code d'erreur
    message String Obligatoire Détails de l'erreur
    { "error":{ "code": 3002, "message": "Push.template field must be set correctly when type is template" } }
                  
                  {
        "error":{
        "code": 3002,
        "message": "Push.template field must be set correctly when type is template"
        }
    }
    
                
    Afficher ce bloc de code dans la fenêtre flottante

    Retours d'appel

    Code de statut HTTP

    Document de référence : HTTP-Status-Code

    Code d'erreur

    Code Description Explication détaillée Code de statut HTTP
    20101 Paramètres de push invalides L'ID d'enregistrement est invalide ou n'appartient pas à l'appkey actuel 400
    21001 Seule la méthode HTTP Post est prise en charge La méthode Get n'est pas prise en charge 405
    21002 Paramètre obligatoire manquant Doit être corrigé 400
    21003 Valeur de paramètre invalide Doit être corrigé 400
    21004 Vérification échouée Doit être corrigé, voir : Vérification d'appel 401
    21005 Corps du message trop volumineux Doit être corrigé, limite de longueur Notification/Message est 4000 octets 400
    21008 Paramètre app_key invalide Doit être corrigé, vérifier l'appkey transmis avec les informations de l'application 400
    21009 Erreur système interne Veuillez contacter l'équipe de support 400
    21011 Aucune cible de push appropriée trouvée Vérifier le champ 'to' 400
    21015 Validation des paramètres de requête échouée Paramètres inattendus présents 400
    21016 Validation des paramètres de requête échouée Erreur de type de paramètre, ou longueur de paramètre dépasse la limite 400
    21030 Délai d'attente du service interne Réessayer plus tard 503
    21050 Paramètre event live_activity incorrect Le paramètre event doit être "start", "update" ou "end" 400
    21051 Paramètre audience live_activity incorrect Lors de la création d'une activité en direct, la cible push ne peut être que broadcast ou basée sur l'enregistrement 400
    21052 Paramètre attributes-type live_activity incorrect Lorsque event=start, attributes-type ne peut pas être vide 400
    21053 Paramètre content-state live_activity incorrect Content-state ne peut pas être vide 400
    21054 Erreur de paramètre live_activity, notification et message personnalisé non autorisés simultanément voip, message, notification, live_activity ne peuvent pas coexister 400
    21055 live_activity ios certificat non-p8 L'activité en direct ne prend en charge que le certificat p8 400
    21056 live_activity ne prend en charge que la plateforme ios Le paramètre platform doit être ios 400
    21057 Le message voip ne peut pas coexister avec d'autres types de messages voip, message, notification, live_activity ne peuvent pas coexister 400
    21058 voip ne prend en charge que la plateforme ios Le paramètre platform doit être ios 400
    23006 Erreur de paramètre big_push_duration du push à débit fixe dépasse la valeur maximale de 1440 400
    23008 Interface limitée en débit QPS de l'interface push d'une seule application atteint la limite (500 qps) 400
    23009 Erreur de permission de push L'adresse IP de push actuelle n'est pas dans la liste blanche IP de l'application 400
    27000 Erreur mémoire interne Veuillez réessayer 500
    27001 Erreur de paramètre Les informations de vérification sont vides 401
    27008 Erreur de paramètre Distribution dans third_party_channel n'est pas vide, mais le contenu alert de la notification est vide 401
    27009 Erreur de paramètre Format invalide ou vide pour distribution dans third_party_channel 401
    21038 Erreur de permission de push VIP expiré ou non activé 401
    21306 Erreur de paramètre Les messages de notification et les messages personnalisés ne peuvent pas être poussés simultanément 401
    21059 Erreur de paramètre Ce type de message ne prend pas en charge big_push_duration 401

    Limitations de push

    Canal fabricant Longueur du titre Longueur du contenu Mots sensibles Autres remarques
    Canal Engagelab Pas de limite, mais la taille totale du message est limitée Pas de limite, mais la taille totale du message est limitée Mots configurés selon la fonctionnalité de mots sensibles La longueur Notification/Message dans MTPush est limitée à 4000 octets.
    Canal Huawei Pas de limite, mais taille totale du message < 4096 octets, titre recommandé ≤ 40 caractères Pas de limite, mais taille totale du message < 4096 octets, contenu recommandé ≤ 1024 caractères Interdit de porter du contenu lié au gouvernement, noms de dirigeants, indépendance de Taïwan, etc. L'autorisation par défaut pour [Notification marketing] est une notification silencieuse, sans son ni vibration.
    Canal Honor Pas de limite, mais taille totale du message < 4096 octets Pas de limite, mais taille totale du message < 4096 octets Interdit de porter du contenu lié au gouvernement, noms de dirigeants, indépendance de Taïwan, etc. -
    Canal Meizu ≤ 32 caractères ≤ 100 caractères Les caractères spéciaux comme # sont interdits
  • Les caractères chinois et anglais sont comptés comme 1 caractère.
  • Certains messages peuvent être stockés dans la [Boîte de messages Meizu].
  • Canal Xiaomi ≤ 50 caractères ≤ 128 caractères Les caractères spéciaux comme #, >> sont interdits
  • Les caractères chinois et anglais sont comptés comme 1 caractère. Les emojis comptent comme deux caractères.
  • Certains messages peuvent apparaître dans les notifications non importantes.
  • Canal OPPO ≤ 50 caractères La longueur du contenu est limitée par le style de notification : 1) Style standard (style=1) : longueur ≤ 50 ; 2) Style texte long (style=2) : longueur ≤ 128 ; 3) Style grande image (style=3) : longueur ≤ 50. Mots configurés selon la fonctionnalité de mots sensibles Calcul de la longueur : caractères chinois, anglais et symboles spéciaux (ex. emojis) comptent tous comme 1 caractère.
    Canal vivo ≤ 40 caractères ≤ 100 caractères
  • Les caractères spéciaux comme #, >> sont interdits.
  • Les messages formels ne doivent pas contenir : chiffres purs, anglais pur, symboles purs, etc.
  • Les caractères chinois et anglais comptent comme 1 caractère.
  • Les autorisations de notification sont désactivées par défaut.
  • Les messages opérationnels ne peuvent pas dépasser 5 pushs par appareil par jour.
  • Canal APNS ≤ 20 caractères (40 caractères anglais), les parties excédentaires afficheront des points de suspension.
  • Le centre de notification et l'écran de verrouillage affichent jusqu'à 110 caractères, 55 caractères chinois.
  • La bannière supérieure affiche jusqu'à 62 caractères, 31 caractères chinois.
  • Mots configurés selon la fonctionnalité de mots sensibles La taille du corps du message est limitée à 4 Ko (4096 octets). La taille maximale pour les notifications VoIP est 5 Ko (5120 octets).
    Canal FCM Pas de limite, mais la taille totale du message est limitée Pas de limite, mais la taille totale du message est limitée Mots configurés selon la fonctionnalité de mots sensibles La longueur Notification/Message dans MTPush est limitée à 4000 octets.
    Canal Harmony Pas de limite, mais la taille totale du message est limitée Pas de limite, mais la taille totale du message est limitée Mots configurés selon la fonctionnalité de mots sensibles La taille du corps du message ne peut pas dépasser 4096 octets (hors Push Token).

    Code multi-langue

    Langue Code
    Anglais en
    Arabe ar
    Chinois (Simplifié) zh-Hans
    Chinois (Traditionnel) zh-Hant
    Tchèque cs
    Danois da
    Néerlandais nl
    Français fr
    Allemand de
    Hindi hi
    Italien it
    Japonais ja
    Coréen ko
    Malais ms
    Russe ru
    Espagnol es
    Thaï th
    Vietnamien vi
    Indonésien id
    Norvégien no
    Suédois sv
    Polonais pl
    Turc tr
    Hébreu he
    Portugais pt
    Roumain ro
    Hongrois hu
    Finnois fi
    Grec el
    Ukrainien uk
    Lao lo
    Portugais (Portugal) pt_PT
    Portugais (Brésil) pt_BR
    Espagnol (Argentine) es_AR
    Espagnol (Espagne) es_ES
    Espagnol (Amérique latine) es_419
    Icon Solid Transparent White Qiyu
    Contactez-nous