Push-API erstellen
Senden Sie eine Benachrichtigung oder eine Nachricht an ein einzelnes Gerät oder eine Geräteliste.
Der übermittelte Inhalt kann nur ein per JSON dargestelltes Push-Objekt sein.
Dies ist die aktuelle Version der Push-API. Die Verbesserungen in Version v4 sind:
- Zugriffsautorisierung per HTTP Basic Authentication. So kann die gesamte API-Anfrage mit gängigen HTTP-Tools abgewickelt werden, z. B. curl, Browser-Plugins usw.
- Push-Inhalt vollständig im JSON-Format.
Anfrage-Limits
Unsere API begrenzt die Aufrufhäufigkeit, um Stabilität und Fairness des Dienstes zu gewährleisten. Die QPS-Limits (Queries Per Second) pro AppKey lauten:
- Standard-Limit: Maximal 500 Anfragen pro Sekunde.
- Erweitertes Limit: Wenn Sie unseren kostenpflichtigen Tarif nutzen und Ihr kostenpflichtiger AppKey ein höheres QPS-Limit benötigt, wenden Sie sich bitte an unser Vertriebsteam: Sales@engagelab.com.
Anfragemethode
POST
Aufrufadresse
Die Schnittstellen-Serviceadresse steht in eins-zu-eins-Beziehung zum gewählten Zugangspunkt des Rechenzentrums. Bitte verwenden Sie die Aufrufadresse, die zum Zugangspunkt Ihrer Anwendung passt.
Derzeit betreibt EngageLab zwei Zugangspunkte in Rechenzentren; die Daten zwischen verschiedenen Service-Zugangspunkten sind vollständig isoliert. Sie können die Aufrufadresse entsprechend dem beim Anlegen des Produkts gewählten Rechenzentrum-Zugangspunkt wählen.
POST v4/push
Aufrufvalidierung
Weitere Informationen finden Sie in der REST-API-Übersicht unter Authentifizierungsmethode.
Anfragebeispiel
Anfrage-Header
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
Anfrage-Body
{
"from": "push",
"to": "all",
"body": {
"platform": "all",
"notification": {
"alert" :"Hello, Push!",
"android": {
"alert": "Hi, Push!",
"title": "Send to 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"
}
}
Anfrageparameter
Die Parameterstruktur des Pushs ist in der folgenden Tabelle beschrieben:
| Schlüsselwort | Typ | Option | Bedeutung |
|---|---|---|---|
| from | String | Optional | Aktueller Dienst-Absender |
| to | String oder JSON-Objekt | Erforderlich | Empfangsziel |
| body | JSON-Objekt | Erforderlich | Anfrage-Body |
| platform | String oder JSON-Array | Erforderlich | Push-Plattform |
| notification | JSON-Objekt | Optional | message ist genau eines erforderlich; beide dürfen nicht gleichzeitig vorkommen. |
| message | JSON-Objekt | Optional | notification ist genau eines erforderlich; beide dürfen nicht gleichzeitig vorkommen. |
| options | JSON-Objekt | Optional | Push-Parameter |
| request_id | String | Optional | Vom Kunden definierbares optionales Feld zur Zuordnung der Antwort zu einer bestimmten Anfrage. |
| custom_args | JSON-Objekt | Optional | Vom Kunden definierbare optionale Felder, die beim Callback zurückgegeben werden. Der Wert umfasst maximal 128 Zeichen. |
from
Aktueller Dienst-Absender, Typ String, optionales Feld.
Anfragebeispiel
{
"from":"push"
}
to
Push-Geräteobjekt: Liste der Geräte, an die gesendet werden kann. Zur Festlegung des Ziels stellt App Push verschiedene Wege bereit, z. B. Alias, Tag, Registrierungs-ID, Untergruppe, Broadcast usw.
Push-Ziel
Neben Broadcast gibt es folgende Möglichkeiten:
| Schlüsselwort | Typ | Bedeutung | Beschreibung | Hinweis |
|---|---|---|---|---|
| all | String | Broadcast senden | Push an alle Geräte | Das Ziel umfasst Geräte, die in den letzten 365 Tagen aktiv waren. |
| tag | JSON-Array | Tag | Array. Mehrere Tags stehen in ODER-Beziehung, d. h. Vereinigungsmenge. | Tags für großflächige Geräte- bzw. Nutzerattribute. |
| tag_and | JSON-Array | Tag AND | Array. Mehrere Tags in UND-Beziehung, d. h. Schnittmenge. | Unterscheidet sich von tag; maximal 20 pro Push. |
| tag_not | JSON-Array | Tag NOT | Array. Zuerst Vereinigung mehrerer Tags, danach Komplement zu dieser Menge. | Pro Push maximal 20. |
| alias | JSON-Array | Alias | Array. Mehrere Aliase in ODER-Beziehung, d. h. Vereinigungsmenge. | Nutzer über Alias identifizieren. |
| registration_id | JSON-Array | Registrierungs-ID | Array. Mehrere Registrierungs-IDs in ODER-Beziehung, d. h. Vereinigungsmenge. | Gerätekennung. Pro Push maximal 1000. |
| live_activity_id | String | Kennung für Live Activity | Entspricht dem Wert liveActivityId im iOS SDK. |
Bei Updates einer Live Activity erforderlich. |
| seg | JSON | Nutzergruppen-ID | ID der in der Konsole angelegten Nutzergruppe. Als Array definiert, derzeit aber nur ein Eintrag pro Push. | Derzeit ist nur ein Eintrag pro Push möglich. |
Die implizite Beziehung mehrerer Werte in einem Array ist ODER (Vereinigung); bei tag_and hingegen UND (Schnittmenge) innerhalb des Arrays.
Wird tag_not allein verwendet, wenden wir die tag_not-Logik auf die Broadcast-Nutzer an.
Diese Typen können kombiniert werden. Bei Kombination mehrerer Ausdrücke gilt implizit UND (Schnittmenge). Beispiel:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
Zuerst wird das Feld tag ausgewertet tag1 oder tag2 = A;
dann das Feld tag_and tag3 und tag4 = B;
dann tag_not nicht (tag5 oder tag6) = C;
Das Endergebnis von to ist A und B und C.
Beispiel
- Push an alle (Broadcast):
{
"to": "all",
}
- Push an mehrere Tags (mindestens eines der Tags): in Shenzhen, Guangzhou oder Peking
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou",
"Beijing"
]
}
}
- Push an mehrere Tags (alle Tags gleichzeitig): in Shenzhen und „female“
{
"to":{
"tag_and":[
"Shenzhen",
"female"
]
}
}
- Push an mehrere Aliase:
{
"to":{
"alias":[
"4314",
"892",
"4531"
]
}
}
- Push an mehrere Registrierungs-IDs:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
- Mehrere Zieltypen gleichzeitig: in Shenzhen oder Guangzhou und gleichzeitig „female“ und „members“
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou"
],
"tag_and":[
"female",
"members"
]
}
}
- Live-Activity-Nachricht senden
{
"to": {
"live_activity_id": "LiveActivity-1"
}
}
Push an Nutzersegment-ID:
{
"to": {
"seg": {
"id":"segid"
}
}
}
Body
Anfrage-Body. Unterstützte Felder:
| Schlüsselwort | Typ | Option | Bedeutung |
|---|---|---|---|
| platform | String oder JSON-Array | Erforderlich | Push-Plattform |
| notification | JSON-Objekt | Optional | message betrachtet werden; genau eines von beiden, nicht beides. |
| message | JSON-Objekt | Optional | notification betrachtet werden; genau eines von beiden, nicht beides. |
| live_activity | JSON-Objekt | Optional | notification oder message betrachtet werden; live_activity darf nicht gleichzeitig mit notification oder message vorkommen. |
| options | JSON-Objekt | Optional | Push-Parameter |
Plattform
MTPush unterstützt Push für Android, iOS und HarmonyOS. Schlüsselwörter: "android", "ios", "hmos".
Ist die Zielplattform iOS, muss die Push-Umgebung über das Feld apns_production in options gesetzt werden: true = Produktionsumgebung (APNs Production), false = Entwicklungsumgebung (APNs Sandbox).
Push an alle Plattformen:
{ "platform" : "all" }
Bestimmte Plattformen auswählen:
{
"platform": [
"android",
"ios",
"hmos"
]
}
Notification
Das Objekt „Notification“ ist einer der Inhalts-Entity-Typen eines Pushs (der andere ist „Message“) und wird dem Client als Benachrichtigung zugestellt.
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| alert | String oder JSON-Objekt | Erforderlich | Inhalt | Der eigentliche Nachrichtentext. Fehlt alert unter android oder ios, wird dieser Wert verwendet. |
| android | JSON-Objekt | Optional | Android-Plattformeigenschaften | Push-Parameter für Android, siehe Android-Beschreibung |
| ios | JSON-Objekt | Optional | iOS-Plattformeigenschaften | Push-Parameter für iOS, siehe iOS-Beschreibung |
| hmos | JSON-Objekt | Optional | hmos-Plattformeigenschaften | Push-Parameter für HarmonyOS, siehe hmos-Beschreibung |
Alert
Die Eigenschaft alert auf dieser Ebene (direkt unter dem Notification-Objekt) ist eine Kurzform: Ist der Alert auf allen Plattformen gleich, können Sie alert nicht pro Plattform setzen; dieser Wert gilt. Gibt es plattformspezifische Definitionen, überschreiben diese den Wert hier.
{
"notification" : {
"alert" : "Hello, Push!"
}
}
Das oben definierte Notification-Objekt wird an alle in platform genannten Plattformen mit derselben Alert-Nachricht gesendet.
Android
Benachrichtigungen unter Android werden vom MTPush SDK gemäß den Benachrichtigungsleisten-Stilen angezeigt. Unterstützte Felder:
| Schlüsselwort | Datentyp | Optional | Bedeutung | Beschreibung |
|---|---|---|---|---|
| alert | String oder JSON-Objekt | Erforderlich | Benachrichtigungsinhalt | alert der übergeordneten Ebene. |
| title | String | Optional | Benachrichtigungstitel | |
| builder_id | Int | Optional | ID des Benachrichtigungsleisten-Stils | Das Android SDK kann benutzerdefinierte Benachrichtigungslayouts setzen; dieses Feld wählt den Stil. |
| channel_id | String | Optional | Android Notification Channel ID | Bis 1000 Byte; ab Android 8.0 können Sie Benachrichtigungskanäle konfigurieren. Steuert die Darstellung anhand der Kanal-ID. |
| priority | Int | Optional | Anzeigepriorität in der Benachrichtigungsleiste | Standard 0, Bereich -2 bis 2. |
| category | String | Optional | Filterung oder Sortierung des Benachrichtigungseintrags | Hängt vollständig von der Strategie des Herstellers ab. |
| style | Int | Optional | Typ des Benachrichtigungsleisten-Stils | Stiltyp der Benachrichtigungsleiste, Standard 0. 1=bigText, 2=Inbox, 3=bigPicture |
| big_text | String | Optional | Big-Text-Stil der Benachrichtigungsleiste | style = 1; Inhalt als großer Text. |
| inbox | JSONObject | Optional | Textelement-Stil (Inbox) | style = 2, bis zu 5 Einträge, je max. 1024 Zeichen. Beispiel: {"box0":"content1"}. |
| big_pic_path | String | Optional | Großbild-Stil der Benachrichtigungsleiste | style = 3, derzeit JPEG (nur FCM), .BMP (nur FCM), .jpg und .png. |
| extras | JSON-Objekt | Optional | Zusatzfelder | Eigene Key/Value-Informationen im JSON-Format für die Geschäftslogik. |
| intent | JSON-Objekt | Optional | Zielseite für Navigation (empfohlen) | Mit intent die Zielseite bei Klick auf die Benachrichtigung festlegen. Empfehlung: intent setzen, sonst kann ein Klick wirkungslos sein. Drei Typen:intent:#Intent;action=action path;component= package name /full activity name;endintent:#Intent;action=android.intent.action.MAIN;end (feste Adresse)scheme://test?key1=val1&key2=val2 |
| large_icon | String | Optional | Großes Benachrichtigungssymbol | |
| small_icon | String | Optional | Kleines Benachrichtigungssymbol | small_icon_uri leer ist, wird standardmäßig dieses Feld genutzt. |
| sound | String | Optional | Klang | /res/raw/ im Android-Projekt.channel_id gesetzt ist. |
| badge_add_num | Int | Optional | Badge-Erhöhung relativ zum bisherigen Wert | badge_add_num = 1 und bisheriges Badge 2 → Anzeige 3. |
| badge_set_num | Int | Optional | Badge auf festen Wert setzen | badge_set_num = 1 → Anzeige immer 1. |
| badge_class | String | Optional | Einstiegs-Activity-Klasse zum Desktop-Symbol, z. B. "com.test.badge.MainActivity" |
badge_add_num, beide erforderlich. |
| display_foreground | String | Optional | App im Vordergrund: Benachrichtigung anzeigen | "1": Benachrichtigung in der Leiste auch im Vordergrund."0": im Vordergrund keine Leisten-Popup. |
| group_id | String | Optional | Nachrichtengruppen-ID | Eindeutige Kennung zur Gruppierung und Steuerung des Zusammenklappens. Seit MTPush Android SDK 5.3.0. |
| is_fold | String | Optional | Nachricht zusammenklappen | true = geklappt, false = nicht geklappt. Zusammen mit group_id: gleiche group_id und is_fold=true → automatisch geklappt; nur group_id ohne is_fold oder is_fold=false → kein automatisches Klappen. Ab MTPush Android SDK 5.3.0. |
{
"notification": {
"android": {
"alert": "hello, MTPush!",
"title": "Push test",
"builder_id": 3,
"style": 1,
"big_text": "big text content",
"inbox":JSONObject,
"big_pic_path": "picture url",
"priority": 0,
"category": "category 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"
}
}
}
}
iOS
APNs-Benachrichtigungen auf iOS.
Der Inhalt wird vom MTPush-Proxy an Apple APNs gesendet und erscheint auf dem Gerät als Systembenachrichtigung.
Der Inhalt entspricht der APNs-Spezifikation; unterstützte Felder:
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| alert | String oder JSON-Objekt | Erforderlich | Benachrichtigungsinhalt | alert der Elternebene. |
| sound | String oder JSON-Objekt | Optional | Benachrichtigungston | |
| badge | Int oder String | Optional | App-Badge | |
| content-available | Boolean | Optional | Hintergrund-Push | Details: "content-available":true = Background Remote Notification, sonst normale Remote Notification: Background Remote Notification |
| mutable-content | Boolean | Optional | Benachrichtigungserweiterung | iOS 10 Notification Service Extension zur Zustellungsanzeige; Client muss die Service Extension implementieren und serverseitig mutable-content setzen.true: UNNotificationServiceExtension. |
| category | String | Optional | Nur iOS 8. Wert des APNs-Felds „category“. | |
| extras | JSON-Objekt | Optional | Erweiterte Felder | Eigene Key/Value-Daten. |
| thread-id | String | Optional | Benachrichtigungsgruppe | Gruppierung von Remote-Benachrichtigungen mit gleicher thread-id. |
| interruption-level | String | Optional | Unterbrechungsstufe (Priorität, Zustellung) | iOS 15: einer von active, critical, passive, timeSensitive, siehe UNNotificationInterruptionLevel. |
iOS-Benachrichtigungen von MTPush werden an APNs weitergeleitet. Die Benachrichtigungslänge in MTPush ist auf 4000 Byte begrenzt. MTPush nutzt UTF-8; ein chinesisches Zeichen zählt 3 Byte.
Beispiel serverseitige Zustellung:
{
"notification": {
"ios": {
"alert": "hello, Push!",
"sound": "sound.caf",
"badge": 1,
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
Vom Client empfangene Nachricht:
{
"_j_msgid" = 813843507;
aps = {
alert = "hello,Push!";
badge = 1;
sound = "sound.caf";
};
"my_key" = "a value";
"news_id" = 134;
}
hmos
HarmonyOS-Benachrichtigungen werden vom MTPush SDK gemäß Benachrichtigungsleisten-Stilen angezeigt. Unterstützte Felder:
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| alert | String | Erforderlich | Benachrichtigungsinhalt | Überschreibt den Eltern-alert. Leerer String: nicht in der Leiste. Limits: Push-Beschränkungen. |
| title | String | Optional | Benachrichtigungstitel | Ersetzt den App-Namen. Siehe Push-Beschränkungen. |
| category | String | Erforderlich | Nachrichtenkategorie | Vom Anbieter vorgeschrieben. Harmony-Kategoriestandards. Entspricht notification.hmos.category. |
| large_icon | String | Optional | Großes Symbol | Nur HTTPS-URL. ≤30 KB, Breite×Höhe < 12800 Pixel. |
| intent | JSONObject | Erforderlich | Navigationsziel | Drei Typen: 1) App-Start: action.system.home 2) Deeplink: scheme://host?key=val 3) Action: com.test.action. Beispiel: {"url":"action.system.home"}. |
| badge_add_num | Int | Optional | Badge-Inkrement | Auslassen: Badge unverändert. Bereich 1–99, addiert zum aktuellen Badge. |
| badge_set_num | Int | Optional | Badge-Fixwert | Auslassen: unverändert. Bereich 0–99, setzt Badge fix. |
| test_message | Boolean | Optional | Testnachrichten-Flag | false: normal (Standard); true: Test. |
| receipt_id | String | Optional | Huawei-Receipt-ID | Eindeutige ID für Harmony-Downlink-Receipt-Konfiguration. |
| extras | JSON | Optional | Zusatzfelder | Eigene JSON-K/V für die Geschäftslogik. |
| style | Int | Optional | Benachrichtigungsstil | Standard 0. 0: normal; 3: mehrzeiliger Text. |
| inbox_content | [String] | Optional | Mehrzeiliger Text | Bei style=3 erforderlich. Bis 3 Einträge, je ≤1024 Zeichen; Abschneiden mit „…“. |
| push_type | Int | Optional | Push-Typ | Standard 0. Unterstützt: 0-Benachrichtigung, 2-erweiterte Benachrichtigung, 10-VoIP-Anruf. Andere ungültig. |
| extra_data | String | Optional | Erweiterte Daten | Entspricht Huawei extraData. Bei push_type=2 oder 10 erforderlich; bei 0 ignoriert. |
| display_foreground | String | Optional | Anzeige bei App im Vordergrund | "1": anzeigen; "0": nicht anzeigen. |
Beispiel:
{
"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"
}
}
}
Message
In-App-Nachrichten (auch: benutzerdefinierte oder durchgereichte Nachrichten).
- Werden nicht in der Benachrichtigungsleiste angezeigt; das MTPush SDK übergibt den Inhalt an die App.
- iOS erhält diesen Teil über den In-App-Push-Kanal (nicht APNS), wenn die App im Vordergrund ist.
Unterstützte Felder:
| Schlüsselwort | Typ | Option | Bedeutung |
|---|---|---|---|
| msg_content | String oder JSON-Objekt | Erforderlich | Nachrichteninhalt |
| title | String | Optional | Nachrichtentitel |
| content_type | String | Optional | Inhaltstyp |
| extras | JSON-Objekt | Optional | Optionale JSON-Parameter |
| test_message | Boolean | Optional | Testnachrichten-Flag (HarmonyOS) |
| receipt_id | String | Optional | Huawei-Receipt-ID (HarmonyOS) |
Beispiel:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
Live_activity
Hinweis: Live-Activity-Nachrichten erfordern ein iOS-P8-Zertifikat; in den iOS-Authentifizierungseinstellungen im Web-Portal wählen Sie „Token Authentication Configuration“.
Der Inhalt einer Live-Activity-Nachricht umfasst folgende Felder:
| Schlüsselwort | Typ | Option | Beschreibung |
|---|---|---|---|
| ios | JSON-Objekt | Erforderlich | Detaillierte Felder siehe iOS JSON-Objekt. |
iOS JSON-Objekt {#ios-json-object}
| Schlüsselwort | Typ | Option | Beschreibung |
|---|---|---|---|
| event | string | Erforderlich | Erstellung: "start", Update: "update", Ende: "end"; bei event=start erforderlich |
| attributes-type | string | Optional | Live-Activity-Typ, vom Entwickler definiert; bei event=start verpflichtend |
| content-state | JSON-Objekt | Erforderlich | Dynamischer Inhalt; muss zum Client-SDK passen (Apple content-state). |
| alert | JSON-Objekt | Optional | Siehe iOS alert JSON-Objekt. |
| dismissal-date | int | Optional | Anzeigezeitpunkt für das Ende der Live Activity. |
| attributes | JSON-Objekt | Optional | Statischer Inhalt; muss zum Client-SDK passen (Apple attributes). |
| stale-date | int | Optional | Ablauf der Anzeige; liegt er vor der aktuellen Zeit, wird die Activity nicht aktualisiert. |
| relevance-score | int | Optional | Priorität auf der Dynamic Island, 1–100, höher = wichtiger; ohne Angabe höchste Priorität. |
| apns-priority | int | Optional | 5 oder 10, Standard 10; apns-priority=5 zählt nicht gegen Apples Ratenlimit, Überschreitung begrenzt Benachrichtigungen. |
iOS alert JSON-Objekt {#ios-alert-json-object}
| Schlüsselwort | Typ | Option | Beschreibung |
|---|---|---|---|
| title | string | Optional | Titel auf Apple-Watch-Nachrichten. |
| body | string | Optional | Text auf Apple-Watch-Nachrichten. |
| sound | string | Optional | Benachrichtigungston. |
- Live-Activity-Nachrichten von Engagelab Push werden an Apple-Server weitergeleitet. Dynamische Update-Daten (ActivityKit) dürfen 4096 Byte nicht überschreiten.
- Engagelab Push begrenzt aus Repackaging- und Sicherheitsgründen die Gesamtlänge der Parameter unter
live_activityfür"ios": { }inkl. Inhalt auf 3584 Byte. JPush/MTPush nutzt UTF-8 (ein chinesisches Zeichen = 3 Byte).
Beispiel Live-Activity-Push
attributes-type und live_activity_id kommen aus dem Entwickler-SDK. Vor Nutzung müssen Start- und Update-Token gemeldet werden. Ablauf siehe Apple: Live Activities mit Push.
Erstellen
{ "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" }Diesen Codeblock im schwebenden Fenster anzeigenAktualisieren
{ "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" }Diesen Codeblock im schwebenden Fenster anzeigen
Voip
iOS-VoIP. Dieser Typ darf nicht mit anderen iOS-Nachrichtentypen kombiniert werden. Anfragestruktur:
{
"from": "push",
"to": {
"registration_id": [ "1a0018970a91da03de5" ]
},
"request_id": "12345",
"custom_args": "12345",
"body": {
"platform": "ios",
"voip": {
"key": "value // Any custom key/value pair that will be passed to the APP"
}
}
}
Android VoIP functionality.
Android VoIP is configured through options.third_party_channel. Xiaomi, vivo, OPPO, and Honor vendor channels are currently supported. OPPO VoIP is supported only on the China node. Request parameter structure:
{
"from": "push",
"to": {
"registration_id": [
"1a0018970a91da03de5"
]
},
"request_id": "12345",
"custom_args": {
"call_id": "call-10001"
},
"body": {
"platform": "android",
"options": {
"classification": 1,
"third_party_channel": {
"xiaomi": {
"voip_extraData": "{\"call_id\":\"call-10001\",\"caller\":\"Alice\"}",
"channel_id": "voip-channel-id",
"callback_id": "callback-10001", // optional
"voip_appMessageId": "app-message-10001", // optional
"voip_callBackParam": "callback-param-10001", // optional
"voip_ttl": 30, // optional
"voip_collapseKey": 1 // optional
},
"vivo": {
"voip_extraData": "{\"call_id\":\"call-10001\",\"caller\":\"Alice\"}",
"voip_extensionExpireShow": true, // optional
"callback_id": "callback-10001", // optional
"voip_appMessageId": "app-message-10001", // optional
"voip_callBackParam": "callback-param-10001", // optional
"voip_ttl": 30, // optional
"voip_collapseKey": 1 // optional
},
"oppo": {
"voip_extraData": "{\"call_id\":\"call-10001\",\"caller\":\"Alice\"}",
"callback_id": "callback-10001", // optional
"voip_appMessageId": "app-message-10001", // optional
"voip_callBackParam": "callback-param-10001", // optional
"voip_ttl": 30, // optional
"voip_collapseKey": 1 // optional
},
"honor": {
"voip_extraData": "{\"call_id\":\"call-10001\",\"caller\":\"Alice\"}",
"voip_appMessageId": "app-message-10001", // optional
"voip_callBackParam": "callback-param-10001", // optional
"voip_ttl": 30, // optional
"voip_collapseKey": 1 // optional
}
}
}
}
}
Notes:
voip_extraDatais a string. If JSON data needs to be passed, serialize the JSON object to a string first.- When setting
voip_extraDatafor the Xiaomi channel,channel_idmust also be set. - OPPO VoIP is supported only on the China node.
- You can pass only the configuration for the vendor channels that your app actually integrates.
- Android VoIP does not require
notification.alertand cannot be sent together withmessageorinappmessage. - Android VoIP does not use the
body.voipfield. That field is only used for iOS VoIP. - Set
options.classification = 1.
Options
Aktuelle Push-Optionen:
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| time_to_live | Int oder String | Optional | Offline-Aufbewahrung (Sekunden) | Ist der Nutzer offline, kann die Nachricht für diese Dauer gehalten und bei erneutem Online-Sein erneut zugestellt werden. Standard 86400 (1 Tag), maximal 15 Tage. Ist der vom Anbieter unterstützte Maximalwert kleiner, gilt dieser. 0 = keine Offline-Aufbewahrung; nur online empfangbar. |
| override_msg_id | Long | Optional | Zu überschreibende Nachrichten-ID | Soll ein früherer Push ersetzt werden, die vorherige msg_id angeben. Offline wird der Inhalt aktualisiert; auf Android bleibt die Benachrichtigung in der Leiste und wird durch neuen Inhalt ersetzt, solange sie nicht gelöscht wurde. Wirksam 1 Tag. Existiert msg_id nicht im Zeitfenster, Fehler 7006 und kein Push. Nur Android; Kanäle: Engagelab, Xiaomi, Meizu, OPPO, FCM, Huawei (EMUI10+). |
| apns_production | Boolean | Optional | APNs-Produktionsumgebung | Nur iOS-Benachrichtigungen.true: Produktion;false: Entwicklung.false, sonst bei Auslassung true. Es wird dringend empfohlen, dieses Feld in Push-Anfragen explizit zu setzen. |
| apns_collapse_id | String | Optional | Kennung zum Aktualisieren von iOS-Benachrichtigungen | Stimmt eine neue APNs-Benachrichtigung mit einer bestehenden im Notification Center in apns-collapse-id überein, wird der Inhalt aktualisiert und nach oben gesetzt. Max. 64 Byte. |
| big_push_duration | Int | Optional | Dauer für verteiltes Senden (Minuten) | „Slow Push“: gleichmäßige Verteilung über n Minuten; max. 1440. |
| multi_language | json object | Optional | Mehrsprachiger Push | Siehe multi_language. |
| third_party_channel | JSON-Objekt | Optional | Android-Herstellerkanal-Konfiguration | Gilt nur für Nutzer mit Herstellerkanal; siehe third_party_channel. |
| classification | Int | Optional | Nachrichtenklassifikation | Unterstützt nur 0 oder 1. Standard ist 0. 0: Betriebs-/Marketingnachrichten. 1: Systemnachrichten. |
| voice_value | String | Optional | Sprachdatei-Wert | Mehrere Werte durch Komma, # steuert Parsing; sonst direkter Dateiname. Dezimalpunkt in Zahlen → Dateiname z. B. point.mp3. Sprachen u. a. "en", "zh-Hans", "zh-Hant". Passt der Inhalt nicht zur Sprachregel, keine Sprachausgabe. |
| enhanc_message | Bool | Optional | In-App-Nachrichtenanzeige verbessern | true aktivieren, false deaktivieren. Sind Benachrichtigungsrechte aus und die App ist im Vordergrund, wird der Leisteninhalt als In-App-Nachricht gezeigt. Standard false, nur bei expliziter Aktivierung. |
| plan_id | String | Optional | Push-Plan-Kennung | Plan muss zuvor angelegt werden (Konsole oder API). |
| cid | String | Optional | Anfrage-Kennung gegen doppelte Pushs | Nur Buchstaben, Ziffern, Unterstrich, Minus, Länge ≤ 64. Muss pro AppKey eindeutig sein. Doppelte Pushs vermeiden |
| auto_truncation | bool | Optional | Automatisches Kürzen zu langer Herstellerkanal-Nachrichten | Standard true. Ist der Body für den Herstellerkanal zu lang, wird gekürzt. Mit false abschaltbar. |
Mehrsprachiger Push {#multi_language}
Feld für mehrsprachigen Push von EngageLab Push. Sie können pro Nutzersprache angepasste Titel und Texte senden, indem Sie Sprachen und Inhalte in der Anfrage angeben.
Anfrageparameter
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| en | string | Optional | Sprachschlüssel | Entspricht der Nutzersprache; Codes siehe Anhang. |
| content | string | Optional | Nachrichteninhalt | Ersetzt je nach Sprache notification.android.alert, notification.ios.alert, notification.web.alert und message.msg_content. |
| title | string | Optional | Nachrichtentitel | Ersetzt je nach Sprache notification.android.title, notification.ios.alert, notification.web.title und message.title. |
| ios_subtitle | string | Optional | iOS-Untertitel | Ersetzt je nach Sprache Daten in notification.ios.alert. |
- HarmonyOS: Nutzen Sie
third_party_channel.hmos.distribution_new; nicht von der globalen Konfiguration betroffen.
Anfragebeispiel
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
"ios_subtitle": ""
}
}
}
}
Herstellerkanal (third_party_channel) {#third_party_channel}
Persönliche Einstellungen für Android-Herstellerkanäle. Unterstützte Schlüssel: xiaomi, huawei, meizu, oppo, vivo, fcm, honor, hmos – eine oder mehrere gleichzeitig. Pro Herstellertyp können folgende Optionen gesetzt werden:
Anfrageparameter
| Schlüsselwort | Typ | Option | Bedeutung | Beschreibung |
|---|---|---|---|---|
| distribution_new | String | Erforderlich | _ | Wenn Engagelab- und Herstellerkanäle parallel genutzt werden, Downlink-Priorität setzen.mtpush: erzwungen über den Engagelab-Kanal.pns_mtpush: bei FCM+inländischer Herstellerkombination zuerst Xiaomi/Huawei/Meizu/OPPO/Vivo/Honor, bei Fehlschlag Engagelab.mtpush_pns: zuerst Engagelab, offline dann Herstellerkanal (Hersteller sekundär).fcm_mtpush: zuerst FCM, bei Fehlschlag Engagelab.mtpush_fcm: zuerst Engagelab, offline dann FCM (FCM sekundär). Hinweis: Bei den vier Strategien pns_mtpush/fcm_mtpush/mtpush_pns/mtpush_fcm: Hat ein Gerät nur einen verfügbaren System-Push-Kanal (FCM oder Hersteller), werden die FCM-/Hersteller-Strategien ignoriert und der integrierte Kanal genutzt. |
| priority | String | Optional | FCM-Nachrichtenpriorität | Gilt nur für den FCM-Kanal. Werte: normal, high. Ist dieses Feld nicht leer, wird es bevorzugt als FCM-Android-Nachrichtenpriorität verwendet. Bei Benachrichtigungen wird ohne dieses Feld der aus notification.android.priority abgeleitete Wert verwendet; bei benutzerdefinierten Nachrichten wird dieses Feld ohne Konfiguration nicht gesendet. |
| notification_as_message | Boolean | Optional | FCM-Benachrichtigungen als benutzerdefinierte Nachrichten zustellen | Gilt nur für FCM-Benachrichtigungen. Standardwert ist false.true: Wenn die Android-SDK-Version auf dem Gerät 5.4.2 oder höher ist, stellt der Server die FCM-Benachrichtigung als benutzerdefinierte Nachricht zu. Der Benachrichtigungsinhalt wird in die Daten der benutzerdefinierten Nachricht gelegt, und n_notification=true kennzeichnet, dass die Nachricht aus einer Benachrichtigung stammt.false oder wenn die Android-SDK-Version auf dem Gerät die Anforderung nicht erfüllt, wird die Nachricht weiterhin als normale FCM-Benachrichtigung zugestellt.options.third_party_channel.fcm.notification_as_message konfiguriert. |
| channel_id | String | Optional | Kategorien der Benachrichtigungsleiste | channel_id gibt es auch unter Android. Ist es hier gesetzt, hat es Vorrang vor android.channel_id.category und notify_level zu befüllen.voip_extraData for Xiaomi Android VoIP, this field is required. |
| pushMode | Int | Optional | vivo-Push-Modus | Standard 0. Details: vivo pushMode. Test-Push: Testgeräte-ID im vivo-Backend hinterlegen. |
| importance | String | Optional | Intelligente Klassifikation (Huawei/Honor) | Entspricht Huaweis importance; leer = Standard "NORMAL". Referenz: Huawei notification message intelligent classification。 |
| urgency | String | Optional | Priorität (Huawei) | HIGH Sondergenehmigung bei Huawei: How to apply for special permission。 |
| category | String | Optional | Szenario-Kennzeichen (Huawei, vivo, OPPO) | Für Huawei, vivo, OPPO: „Cloud“-Nachrichtentyp, Alarmverhalten und beschleunigte Zustellung. |
| notify_level | Int | Optional | OPPO: Alarmstufen der Leistennachricht | 1 Leiste, 2 Leiste+Sperrbildschirm, 16 Leiste+Sperrbildschirm+Banner+Vibration+Klingelton. notify_level nur für „Service and Communication“. notify_level ist category erforderlich. |
| small_icon_uri | String | Optional | Kleines Symbol (Hersteller) | |
| small_icon_color | String | Optional | Farbe kleines Symbol (Xiaomi) | Anpassung an Xiaomi-Farbe; leer = grau (Feature wird von Xiaomi eingeschränkt). |
| template_id | String | Optional | Xiaomi-Hersteller-Vorlagen-ID | Nur für den Xiaomi-Kanal wirksam. Geben Sie die auf der Xiaomi Open Platform erstellte Vorlagen-ID an; EngageLab leitet sie an Xiaomi durch. Vorlagenkonfiguration und ID-Werte richten sich nach der Xiaomi-Plattform. |
| template_param | JSON Object | Optional | Xiaomi-Hersteller-Vorlagenparameter | Nur für den Xiaomi-Kanal wirksam. Leeres Objekt zur Kompatibilität mit bestehenden Aufrufen erlaubt. Bei Nichtleerheit muss jeder Parameterwert ein String mit 1–128 Zeichen sein, darf nicht nur aus Leerzeichen bestehen und keine Emojis, Unicode Other Symbol oder nicht zugewiesene Unicode-Zeichen enthalten. |
| big_text | String | Optional | Großtext (Hersteller) | big_text aus android.style=1 in android. |
| big_picture_id | String | Optional | OPPO-Großbild-ID | style=3 (Großbild). ID über Bild-Upload-API, hier eintragen. |
| small_picture_id | String | Optional | OPPO-Kleinsymbol-ID | |
| private_msg_template_id | String | Optional | OPPO-Privatnachrichten-Vorlagen-ID | |
| private_title_parameters | JSON Object | Optional | OPPO-Titelvorlagen-Parameter | {"city":"北京"}. |
| private_content_parameters | JSON Object | Optional | OPPO-Inhaltsvorlagen-Parameter | {"userName":"汤姆", "city":"深圳市"}. |
| badge_operation_type | Int | Optional | OPPO-Desktop-Badge-Operationstyp | Nur für den OPPO-Kanal wirksam. Werte: 0 oder 1. 1 erhöht den Badge um 1; badge_message_count kann entfallen. 0 überschreibt den aktuellen Badge mit badge_message_count. Vor Nutzung Desktop-Zahlenbadge auf der OPPO Open Platform freischalten. |
| badge_message_count | Int | Optional | OPPO-Desktop-Badge-Wert | Nur für den OPPO-Kanal wirksam. Muss eine nichtnegative Ganzzahl sein. Zum Überschreiben des aktuellen Badges zusammen mit badge_operation_type=0 übergeben; 0 löscht den Badge. Die API erlaubt ein leeres Feld zur Kompatibilität mit bestehenden Aufrufen. |
| add_badge | Boolean | Optional | Badge bei vivo-Benachrichtigung automatisch erhöhen | Nur für den vivo-Kanal wirksam. Bei true erhöht der vivo-Herstellerkanal den App-Badge automatisch; die Wirkung hängt von OS-Version, Desktop-Badge-Schalter und vivo-Badge-Berechtigung ab. |
| voip_extraData | String | Optional | Android VoIP extended data | notification.alert is not required, and it cannot be sent together with message or inappmessage.channel_id must also be set. |
| voip_extensionExpireShow | Boolean | Optional | Whether vivo VoIP remains displayed after expiration | Supported only for vivo Android VoIP. The meaning is the same as vivo vendor field extensionExpireShow, and EngageLab passes it through to vivo. |
| callback_id | String | Optional | Android VoIP vendor receipt configuration ID | |
| voip_appMessageId | String | Optional | Android VoIP app message ID | appMessageId field. Currently supported for Honor, Xiaomi, OPPO, and vivo Android VoIP. |
| voip_callBackParam | String | Optional | Android VoIP callback parameter | callBackParam field. Currently supported for Honor, Xiaomi, OPPO, and vivo Android VoIP. |
| voip_ttl | Int | Optional | Android VoIP message time to live (seconds) | ttl field. Currently supported for Honor, Xiaomi, OPPO, and vivo Android VoIP. |
| voip_collapseKey | Int | Optional | Android VoIP offline message caching policy | collapseKey field. Currently supported for Honor, Xiaomi, OPPO, and vivo Android VoIP.0 caches all offline messages; when there are more than 30 offline messages, older messages are discarded and only the latest 30 are retained. -1 keeps only the latest offline message sent by the same app to the device. |
Zur Vereinheitlichung der Mehrkanal-Strategie wurde die Konfiguration von
distribution_newangepasst. Bestehende herstellerspezifische Einstellungen bleiben gültig; empfohlen ist schrittweise Migration zur globalen Konfiguration (Wirksam ab 2025.04.03):
- Priorität (neue Regeln)
- Höchste Priorität: global
third_party_channel.distribution_new(empfohlen)
Beispiel:"distribution_new": "pns_mtpush" - Zweite Priorität: pro Hersteller
third_party_channel.{vendor_key}.distribution_new(Legacy)
Nur wenn global nicht gesetzt - Ohne Konfiguration: Standard
pns_mtpush
- Höchste Priorität: global
Hinweise zur Kompatibilität
- Abwärtskompatibilität: Hersteller-Level funktioniert weiter, wenn das globale Feld leer ist.
- Konflikt: Sind global und Hersteller gesetzt, gilt nur der globale Wert.
- Langfristig: Hersteller-
distribution_newkann entfallen; bitte frühzeitig anpassen.
Anfragebeispiel
{
"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",
"template_id": "xiaomi_template_id",
"template_param": {
"name": "EngageLab"
}
},
"huawei": {
"importance": "NORMAL",
"small_icon_uri": "https://xx.com/xx.jpg"
},
"oppo": {
"channel_id": "*******",
"big_picture_id": "",
"small_picture_id": "",
"private_msg_template_id": "*******",
"private_title_parameters": {"city": "北京"},
"private_content_parameters": {"userName": "汤姆", "city": "深圳市"},
"badge_operation_type": 1
},
"vivo": {
"pushMode": 0,
"add_badge": true
},
"fcm": {
"distribution_new": "pns_mtpush",
"priority": "high",
"notification_as_message": true
},
"hmos": {
"distribution_new": "pns_mtpush"
}
}
}
Request_id
Optionales, vom Kunden definiertes Request-ID-Feld. Dient der Zuordnung von Anfrage und Antwort.
Anfragebeispiel
{
"request_id":"12345678"
}
Antwortbeispiel
{
"msg_id": "1225764",
"request_id": "12345678"
}
Custom_args
Vom Kunden definiertes optionales Feld; nicht in der direkten API-Antwort, aber im Callback.
Anfragebeispiel
{
"custom_args":{
"args1": "args1"
}
}
Rückgabeparameter
Erfolgreiche Antwort
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| request_id | String | Erforderlich | Die Antwort-Eigenschaft ist immer vorhanden. Die in der Anfrage übermittelte benutzerdefinierte ID wird unverändert zurückgegeben; ohne Angabe ist sie in der Regel ein leerer String. |
| msg_id | String | Erforderlich | Nachrichten-ID, eindeutige Kennung einer Nachricht. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id":"18","msg_id":"1828256757"}
Fehlerhafte Antwort
HTTP-Status 4xx oder 5xx; Antwortbody enthält u. a.:
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, siehe Fehlercodes |
| message | String | Erforderlich | Fehlerdetails |
{
"error":{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
}
Antwort des Aufrufs
HTTP-Statuscode
Referenz: HTTP-Status-Code
Fehlercodes {#fehlercodes}
| Code | Beschreibung | Erläuterung | HTTP-Statuscode |
|---|---|---|---|
| 20101 | Ungültige Push-Parameter | Registrierungs-ID ungültig oder nicht zur aktuellen appkey gehörig | 400 |
| 21001 | Nur HTTP POST unterstützt | GET nicht unterstützt | 405 |
| 21002 | Pflichtparameter fehlt | Korrigieren | 400 |
| 21003 | Ungültiger Parameterwert | Korrigieren | 400 |
| 21004 | Verifizierung fehlgeschlagen | Korrigieren, siehe Aufrufvalidierung | 401 |
| 21005 | Nachricht zu groß | Korrigieren; Notification/Message max. 4000 Byte | 400 |
| 21007 | Ungültiger Eingabeparameter | Der Parameter receiver_value ist ungültig | 400 |
| 21008 | Ungültiger app_key-Parameter | Muss korrigiert werden. Prüfen Sie, ob der übermittelte appkey eine Zeichenfolge mit 24 Zeichen ist und ob zusätzliche Leerzeichen enthalten sind | 400 |
| 21009 | Interner Systemfehler | Support kontaktieren | 400 |
| 21011 | Kein passendes Push-Ziel | Feld to prüfen |
400 |
| 21015 | Parametervalidierung fehlgeschlagen | Unerwartete Parameter | 400 |
| 21016 | Parametervalidierung fehlgeschlagen | Falscher Typ oder Länge überschritten | 400 |
| 21030 | Interner Timeout | Später erneut versuchen | 503 |
| 21036 | Parameterfehler | Benachrichtigung und Custom-Message nicht gleichzeitig | 400 |
| 21037 | Ungültiger group_key | group_key ist kein 24-stelliger String, oder die zugehörige App-Gruppe existiert nicht | 400 |
| 21038 | Push-Berechtigungsfehler | VIP abgelaufen oder nicht aktiv | 400 |
| 21043 | Push-Berechtigungsfehler | Die App hat eine unbezahlte Rechnung | 400 |
| 21050 | Ungültiger live_activity-Event | Event muss start, update oder end sein |
400 |
| 21051 | Ungültiges live_activity-Ziel | Bei Erstellung nur Broadcast oder Registrierungs-ID | 400 |
| 21052 | Ungültiger live_activity attributes-type | Bei event=start darf attributes-type nicht leer sein |
400 |
| 21053 | Ungültiger live_activity content-state | content-state darf nicht leer sein |
400 |
| 21054 | live_activity-Fehler: Benachrichtigung und Custom-Message nicht gleichzeitig | voip, message, notification, live_activity schließen sich aus |
400 |
| 21055 | live_activity iOS ohne P8-Zertifikat | Live Activity nur mit P8-Zertifikat | 400 |
| 21056 | live_activity nur iOS | platform muss ios sein |
400 |
| 21057 | VoIP nur iOS | platform muss ausschließlich ios sein |
400 |
| 21058 | VoIP nicht mit anderen Typen kombinierbar | voip, message, notification, live_activity, in_app_message schließen sich aus |
400 |
| 21059 | Parameterfehler | Dieser Nachrichtentyp unterstützt kein big_push_duration |
400 |
| 21060 | Parameterfehler der In-App-Nachricht | In-App-Nachrichten können nicht zusammen mit Benachrichtigung, Custom-Message, live_activity oder voip verwendet werden | 400 |
| 21061 | Validierung von Inhalt oder Callback-Konfiguration fehlgeschlagen | Der Push-Inhalt enthält sensible Wörter, oder die angeforderte callback_url ist nicht in den Callback-Adressen der aktuellen App konfiguriert | 400 |
| 21062 | Anzahl der Datei-Push-Ziele überschreitet das Limit | Die Anzahl der Push-Ziele in der Datei überschreitet das App-Kontingent oder das Systemlimit | 400 |
| 21063 | Konflikt beim Android-VoIP-Nachrichtentyp | Android VoIP kann nicht zusammen mit Custom-Message oder In-App-Nachricht gesendet werden | 400 |
| 23006 | Parameterfehler | big_push_duration über Maximum 1440 |
400 |
| 23008 | Schnittstellen-Rate-Limit | Push-QPS-Limit (500) erreicht | 400 |
| 23009 | Push-Berechtigungsfehler | Client-IP nicht in IP-Whitelist | 400 |
| 27000 | Interner Speicherfehler | Erneut versuchen | 500 |
| 27001 | Ungültige Authentifizierungsinformationen | Der AppKey in Basic Auth ist 24 Zeichen lang, aber die Anwendung existiert nicht, oder die Authentifizierungsinformationen der Anwendung sind ungültig | 401 |
| 27006 | override_msg_id existiert nicht | Kein Push-Datensatz für override_msg_id gefunden | 400 |
| 27007 | Formatfehler von override_msg_id | override_msg_id ist negativ oder hat ein ungültiges Format | 400 |
| 27008 | Parameterfehler | third_party_channel mit distribution, aber leerer alert |
400 |
| 27009 | Parameterfehler | Ungültiges oder leeres distribution in third_party_channel |
400 |
| 27104 | Segment-ID existiert nicht | Die segment ID existiert nicht. Erstellen oder ändern Sie zuerst das Segment | 400 |
| 27200 | Ungültige msg_id | Das Format von msg_id ist ungültig | 400 |
| 27201 | msg_id existiert nicht oder gehört nicht zur App | msg_id existiert nicht oder gehört nicht zum aktuellen appkey | 400 |
| 27202 | Nachricht bereits zurückgezogen | Die Nachricht zu msg_id wurde bereits zurückgezogen | 400 |
| 27203 | Systemfehler | Systemfehler, bitte erneut versuchen | 400 |
| 27204 | Rücknahmezeit der Nachricht überschritten | Die Nachricht hat die zulässige Rücknahmezeit überschritten | 400 |
| 27300 | Ungültige Push-Plan-ID | Das Format von plan_id ist ungültig | 400 |
| 27301 | Ungültige Push-Plan-Beschreibung | Die Länge von plan_description überschreitet das Limit | 400 |
| 27302 | Anzahl der Push-Pläne überschreitet das Limit | Die Anzahl verfügbarer Push-Pläne hat das Limit erreicht | 400 |
| 27303 | Push-Plan-ID ist leer | plan_id darf nicht leer sein | 400 |
| 27304 | Push-Plan-ID zu lang | Die Länge von plan_id überschreitet das Limit | 400 |
| 27305 | Push-Plan existiert nicht | Die angegebene plan_id existiert unter dem aktuellen appkey nicht | 400 |
| 27306 | Anzahl der Push-Plan-IDs überschreitet das Limit | Die Anzahl der plan_ids überschreitet das Limit | 400 |
| 28100 | Ungültiger Parameter der geplanten Aufgabe | Der Parameter schedule task ist ungültig | 400 |
| 28101 | Authentifizierung der geplanten Aufgabe fehlgeschlagen | Basic Authentication fehlgeschlagen | 401 |
| 28102 | Ungültiger Parameter des geplanten Push | Der Parameter push ist leer oder ungültig | 400 |
| 28103 | Ungültige Zeit des geplanten Push | Das Format von single time oder trigger time ist fehlerhaft | 400 |
| 28104 | Geplante Aufgabe existiert nicht | Die angeforderte schedule task existiert nicht | 404 |
| 28105 | Geplante Aufgabe hat kein Push-Ziel | Zum geplanten Zeitpunkt gibt es kein passendes Push-Ziel | 400 |
| 28200 | Systemfehler der geplanten Aufgabe | Im Dienst ist ein unerwarteter interner Fehler aufgetreten | 500 |
Push-Beschränkungen
| Anbieterkanal | Titellänge | Inhaltslänge | Sensible Begriffe | Sonstiges |
|---|---|---|---|---|
| Engagelab-Kanal | Kein Limit, Gesamtgröße begrenzt | Kein Limit, Gesamtgröße begrenzt | Gemäß Sensitivwörter-Funktion | Notification/Message in MTPush max. 4000 Byte. |
| Huawei-Kanal | Kein Limit, Gesamt < 4096 Byte, Titel empfohlen ≤ 40 Zeichen | Kein Limit, Gesamt < 4096 Byte, Inhalt empfohlen ≤ 1024 Zeichen | Keine Inhalte zu Regierung, Führungspersonen, Taiwan-Unabhängigkeit etc. | Standard für [Marketing Notification]: stille Benachrichtigung ohne Ton/Vibration. |
| Honor-Kanal | Kein Limit, Gesamt < 4096 Byte | Kein Limit, Gesamt < 4096 Byte | Wie Huawei-Themen | – |
| Meizu-Kanal | ≤ 32 Zeichen | ≤ 100 Zeichen | Sonderzeichen wie # verboten | |
| Xiaomi-Kanal | ≤ 50 Zeichen | ≤ 128 Zeichen | z. B. #, >> verboten | |
| OPPO-Kanal | ≤ 50 Zeichen | Inhalt abhängig vom Stil: 1) Standard (style=1): ≤ 50; 2) Langtext (style=2): ≤ 128; 3) Großbild (style=3): ≤ 50. | Gemäß Sensitivwörter | Zeichenlänge: inkl. Emoji und Sonderzeichen je 1 Zeichen. |
| vivo-Kanal | ≤ 40 Zeichen | ≤ 100 Zeichen | ||
| APNS-Kanal | ≤ 20 Zeichen (40 lateinisch), Rest mit Ellipse | Gemäß Sensitivwörter | Body max. 4 KB (4096 Byte). VoIP max. 5 KB (5120 Byte). | |
| FCM-Kanal | Kein Limit, Gesamt begrenzt | Kein Limit, Gesamt begrenzt | Gemäß Sensitivwörter | Wie MTPush 4000 Byte. |
| Harmony-Kanal | Kein Limit, Gesamt begrenzt | Kein Limit, Gesamt begrenzt | Gemäß Sensitivwörter | Body max. 4096 Byte (ohne Push Token). |
Mehrsprachige Sprachcodes
| Sprache | Code |
|---|---|
| Englisch | en |
| Arabisch | ar |
| Chinesisch (vereinfacht) | zh-Hans |
| Chinesisch (traditionell) | zh-Hant |
| Tschechisch | cs |
| Dänisch | da |
| Niederländisch | nl |
| Französisch | fr |
| Deutsch | de |
| Hindi | hi |
| Italienisch | it |
| Japanisch | ja |
| Koreanisch | ko |
| Malaiisch | ms |
| Russisch | ru |
| Spanisch | es |
| Thai | th |
| Vietnamesisch | vi |
| Indonesisch | id |
| Norwegisch | no |
| Schwedisch | sv |
| Polnisch | pl |
| Türkisch | tr |
| Hebräisch | he |
| Portugiesisch | pt |
| Rumänisch | ro |
| Ungarisch | hu |
| Finnisch | fi |
| Griechisch | el |
| Ukrainisch | uk |
| Laotisch | lo |
| Portugiesisch (Portugal) | pt_PT |
| Portugiesisch (Brasilien) | pt_BR |
| Spanisch (Argentinien) | es_AR |
| Spanisch (Spanien) | es_ES |
| Spanisch (Lateinamerika) | es_419 |










