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
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==
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"
}
}
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 | |
| message | Objet JSON | Optionnel | |
| 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"
}
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. |
| 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. |
| 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"
}
- Push vers plusieurs tags (si l'un des tags est satisfait) : à Shenzhen, Guangzhou ou Pékin
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou",
"Beijing"
]
}
}
- Push vers plusieurs tags (doit être dans la plage de plusieurs tags en même temps) : à Shenzhen et "femme"
{
"to":{
"tag_and":[
"Shenzhen",
"female"
]
}
}
- Push vers plusieurs alias :
{
"to":{
"alias":[
"4314",
"892",
"4531"
]
}
}
- Push vers plusieurs IDs d'inscription :
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
- 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"
]
}
}
- Push d'un message d'activité en temps réel
{
"to": {
"live_activity_id": "LiveActivity-1"
}
}
Push vers un ID de segmentation utilisateur :
{
"to": {
"seg": {
"id":"segid"
}
}
}
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 | |
| message | Objet JSON | Optionnel | |
| live_activity | Objet JSON | Optionnel | |
| 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" }
Désignation de plateformes spécifiques :
{
"platform": [
"android",
"ios",
"hmos"
]
}
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!"
}
}
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 | |
| title | String | Optionnel | Titre de la notification | |
| 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 | |
| inbox | Objet JSON | Optionnel | Style de barre de notification liste de textes | |
| big_pic_path | String | Optionnel | Style de barre de notification grande image | |
| 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 :intent:#Intent;action=action path;component= nom du package /nom complet de l'activité;endintent:#Intent;action=android.intent.action.MAIN;end (adresse fixe)scheme://test?key1=val1&key2=val2 |
| large_icon | String | Optionnel | Grande icône de notification | |
| small_icon | String | Optionnel | Petite icône de notification | |
| sound | String | Optionnel | Son | |
| badge_add_num | Int | Optionnel | Définir la valeur incrémentale du badge, à ajouter au badge d'origine | |
| badge_set_num | Int | Optionnel | Définir une valeur fixe pour le badge | |
| badge_class | String | Optionnel | Classe Activity d'entrée de l'application correspondant à l'icône du bureau, ex : "com.test.badge.MainActivity" | |
| display_foreground | String | Optionnel | Application au premier plan, afficher ou non les notifications | |
| 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"
}
}
}
}

