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, z. B. https://example.com/image.png. ≤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": "call-10001" // 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": "call-10001" // 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": "call-10001" // 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": "call-10001" // 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). |
| 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 | |
| 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 | String | Optional | Android VoIP message collapse ID | collapseKey field. Currently supported for Honor, Xiaomi, OPPO, and vivo Android VoIP.collapseKey are collapsed on the vendor side. Later messages overwrite earlier messages. This is commonly used to cancel or update call requests. |
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"
},
"huawei": {
"importance": "NORMAL",
"small_icon_uri": "https://xx.com/xx.jpg"
},
"oppo": {
"channel_id": "*******",
"big_picture_id": "",
"small_picture_id": ""
},
"vivo": {
"pushMode": 0
},
"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 | Optional | Die mitgeschickte benutzerdefinierte ID wird unverändert zurückgegeben. |
| 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 |
| 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 |
| 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 nicht mit anderen Typen kombinierbar | voip, message, notification, live_activity schließen sich aus |
400 |
| 21058 | VoIP nur iOS | platform muss ios sein |
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 |
| 27008 | Parameterfehler | third_party_channel mit distribution, aber leerer alert |
400 |
| 27009 | Parameterfehler | Ungültiges oder leeres distribution in third_party_channel |
400 |
| 21038 | Push-Berechtigungsfehler | VIP abgelaufen oder nicht aktiv | 401 |
| 21306 | Parameterfehler | Benachrichtigung und Custom-Message nicht gleichzeitig | 400 |
| 21059 | Parameterfehler | Dieser Nachrichtentyp unterstützt kein big_push_duration |
400 |
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 |










