Membuat Push API
Kirim notifikasi atau pesan ke satu perangkat atau ke daftar perangkat.
Konten yang dikirim hanya berupa objek push dalam format JSON.
Ini adalah versi terbaru dari Push API. Peningkatan pada versi v4 meliputi:
- Menggunakan HTTP Basic Authentication untuk otorisasi akses. Dengan cara ini, semua permintaan API dapat dilakukan menggunakan alat HTTP umum, seperti: curl, plug-in browser, dan lainnya.
- Konten push sepenuhnya dalam format JSON.
Batas Frekuensi Permintaan
API kami menerapkan batas frekuensi panggilan untuk menjaga stabilitas dan keadilan layanan. Batas QPS (Queries Per Second) untuk setiap AppKey adalah:
- Batas Standar: Maksimal 500 permintaan per detik.
- Batas Lanjutan: Jika Anda adalah pelanggan paket berbayar dan AppKey Anda membutuhkan batas QPS lebih tinggi, silakan hubungi tim bisnis kami: Sales@engagelab.com.
Metode Permintaan
POST
Alamat Endpoint
Alamat layanan antarmuka sesuai dengan pusat data yang dipilih. Silakan pilih alamat endpoint yang sesuai dengan pusat data aplikasi Anda.
Saat ini, EngageLab menyediakan dua pusat data, dan data antar pusat data benar-benar terpisah. Pilih alamat endpoint sesuai pusat data yang dipilih saat membuat produk.
POST v4/push
Validasi Permintaan
Untuk informasi lebih lanjut, lihat ringkasan REST API pada Metode Autentikasi.
Contoh Permintaan
Header Permintaan
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
Body Permintaan
{
"from": "push",
"to": "all",
"body": {
"platform": "all",
"notification": {
"alert" :"Hello, Push!",
"android": {
"alert": "Hi, Push!",
"title": "Kirim ke 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 untuk Anda"
}
}'
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
Parameter Permintaan
Struktur parameter push dijelaskan pada tabel berikut:
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| from | String | Opsional | Pengirim layanan saat ini |
| to | String/JSON | Wajib | Target pengiriman |
| body | JSON Object | Wajib | Body permintaan pengiriman |
| platform | String/Array | Wajib | Platform Push |
| notification | JSON Object | Opsional | |
| message | JSON Object | Opsional | |
| options | JSON Object | Opsional | Parameter push |
| request_id | String | Opsional | Field opsional untuk mengidentifikasi permintaan pada respons. |
| custom_args | JSON Object | Opsional | Field opsional yang dikembalikan pada callback. Maksimal 128 karakter. |
from
Pengirim layanan saat ini, tipe String, field opsional.
Contoh Permintaan
{
"from":"push"
}
to
Objek Perangkat Push, menunjukkan daftar perangkat yang dapat dikirimi push. Penentuan target perangkat push bisa menggunakan alias, tag, registration ID, subgroup, broadcast, dan lainnya.
Target Push
Beberapa cara memilih perangkat selain broadcast:
| Kata Kunci | Tipe | Makna | Deskripsi | Catatan |
|---|---|---|---|---|
| all | String | Broadcast | Push ke semua perangkat | Target push adalah perangkat aktif dalam 365 hari terakhir. |
| tag | JSON Array | Tag | Array. Relasi antar tag adalah OR (gabungan). | Segmentasi perangkat atau pengguna dalam skala besar. |
| tag_and | JSON Array | Tag AND | Array. Tag saling AND (irisan). | Maksimal 20 tag per push. |
| tag_not | JSON Array | Tag NOT | Array. Gabungan beberapa label lalu diambil komplemennya. | Maksimal 20 tag per push. |
| alias | JSON Array | Alias | Array. Alias adalah OR (gabungan). | Identifikasi pengguna dengan alias. |
| registration_id | JSON Array | Registration ID | Array. Registration ID adalah OR (gabungan). | Identifikasi perangkat. Maksimal 1000 per push. |
| live_activity_id | String | ID Aktivitas Real-time | Sesuai liveActivityId di SDK iOS. | Wajib saat memperbarui aktivitas real-time. |
| seg | JSON | ID Grup Pengguna | ID grup pengguna yang dibuat di halaman. | Saat ini hanya bisa satu per push. |
Hubungan implisit antar beberapa nilai dalam array adalah OR (gabungan); namun tag_and adalah AND (irisan).
Jika tag_not digunakan sendiri, maka pemrosesan tag_not dilakukan di antara pengguna broadcast.
Tipe-tipe ini dapat digunakan bersamaan. Hubungan implisit antar beberapa polynomial saat bersamaan adalah AND (irisan). Contoh:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
Hitung hasil field "tag" terlebih dahulu tag1 atau tag2 = A;
Lalu hitung hasil field "tag_and" tag3 dan tag4 = B;
Lalu hitung hasil field "tag_not" bukan (tag5 atau tag6) = C;
Hasil akhir dari "to" adalah A dan B dan C .
Contoh
- Push ke semua perangkat (broadcast):
{
"to": "all",
}
- Push ke beberapa tag (cukup salah satu tag): di Shenzhen, Guangzhou, atau Beijing
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou",
"Beijing"
]
}
}
- Push ke beberapa tag (harus memenuhi semua tag): di Shenzhen dan "perempuan"
{
"to":{
"tag_and":[
"Shenzhen",
"female"
]
}
}
- Push ke beberapa alias:
{
"to":{
"alias":[
"4314",
"892",
"4531"
]
}
}
- Push ke beberapa registration ID:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
- Push ke beberapa tipe target sekaligus: di Shenzhen atau Guangzhou dan "perempuan" "anggota"
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou"
],
"tag_and":[
"female",
"members"
]
}
}
- Push pesan live activity
{
"to": {
"live_activity_id": "LiveActivity-1"
}
}
Push ke ID segmentasi pengguna:
{
"to": {
"seg": {
"id":"segid"
}
}
}
Body
Body permintaan push. Field yang didukung sebagai berikut:
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| platform | String/Array | Wajib | Platform push |
| notification | JSON Object | Opsional | |
| message | JSON Object | Opsional | |
| live_activity | JSON Object | Opsional | |
| options | JSON Object | Opsional | Parameter push |
Platform
MTPush mendukung push ke Android, iOS, dan HarmonyOS. Kata kuncinya: "android", "ios", "hmos".
Jika target platform adalah iOS, Anda harus mengatur lingkungan push melalui field apns_production di options. true berarti push ke lingkungan produksi, false berarti ke lingkungan pengembangan.
Push ke semua platform:
{ "platform" : "all" }
Pilih platform tertentu:
{
"platform": [
"android",
"ios",
"hmos"
]
}
Notification
Objek "Notification" adalah salah satu entitas konten push (satunya lagi "Message"), dikirim ke klien sebagai notifikasi.
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| alert | String/JSON | Wajib | Konten | Isi pesan. Jika alert tidak diisi di bawah android/ios, maka digunakan alert di sini. |
| android | JSON Object | Opsional | Properti android | Parameter push Android, lihat deskripsi android |
| ios | JSON Object | Opsional | Properti ios | Parameter push iOS, lihat deskripsi ios |
| hmos | JSON Object | Opsional | Properti hmos | Parameter push HarmonyOS, lihat deskripsi hmos |
Alert
Properti "alert" di sini (langsung di bawah notification) adalah shortcut. Jika pesan alert sama di semua platform, cukup di sini. Jika ada di tiap platform, maka menimpa yang di sini.
{
"notification" : {
"alert" : "Hello, Push!"
}
}
Objek notification di atas akan dikirim ke semua platform yang ditentukan oleh "platform" dan semua akan menerima pesan notifikasi yang sama.
Android
Notifikasi di Android ditampilkan oleh MTPush SDK sesuai gaya notifikasi bar. Field yang didukung:
| Kata Kunci | Tipe Data | Opsional | Makna | Deskripsi |
|---|---|---|---|---|
| alert | String/JSON | Wajib | Konten Notifikasi | |
| title | String | Opsional | Judul Notifikasi | |
| builder_id | Int | Opsional | ID Gaya Notifikasi Bar | Android SDK dapat mengatur layout notifikasi custom, field ini menentukan gaya yang digunakan. |
| channel_id | String | Opsional | ID Channel Notifikasi Android | Maksimal 1000 byte, mulai Android 8.0, Anda dapat mengatur Notification Channels. |
| priority | Int | Opsional | Prioritas Tampilan Notifikasi Bar | Default 0, rentang -2 sampai 2. |
| category | String | Opsional | Filter atau Urutan Notifikasi Bar | Bergantung pada strategi produsen perangkat. |
| style | Int | Opsional | Tipe Gaya Notifikasi Bar | Default 0. 1=bigText, 2=Inbox, 3=bigPicture |
| big_text | String | Opsional | Gaya Notifikasi Bar Big Text | |
| inbox | JSONObject | Opsional | Gaya Notifikasi Bar Item Teks | {"box0":"konten1"}. |
| big_pic_path | String | Opsional | Gaya Notifikasi Bar Gambar Besar | |
| extras | JSON Object | Opsional | Field Tambahan | Definisikan Key/Value custom dalam format JSON untuk kebutuhan bisnis. |
| intent | JSON Object | Opsional | Tentukan Halaman Tujuan Navigasi | Gunakan intent untuk menentukan halaman tujuan saat notifikasi diklik. Disarankan isi field ini. Mendukung tiga tipe:intent:#Intent;action=action path;component=nama paket/nama activity lengkap;endintent:#Intent;action=android.intent.action.MAIN;endscheme://test?key1=val1&key2=val2 |
| large_icon | String | Opsional | Ikon Notifikasi Besar | |
| small_icon | String | Opsional | Ikon Notifikasi Kecil | |
| sound | String | Opsional | Suara | |
| badge_add_num | Int | Opsional | Tambahan Badge | |
| badge_set_num | Int | Opsional | Setel Nilai Badge | |
| badge_class | String | Opsional | Kelas Activity Entry Aplikasi | |
| display_foreground | String | Opsional | Tampilkan notifikasi saat app foreground | |
| group_id | String | Opsional | ID Grup Pesan | Penanda unik pengelompokan pesan, untuk collapse pesan. Didukung mulai MTPush Android SDK v5.0.1. |
{
"notification": {
"android": {
"alert": "hello, MTPush!",
"title": "Tes Push",
"builder_id": 3,
"style": 1,
"big_text": "isi big text",
"inbox":JSONObject,
"big_pic_path": "url gambar",
"priority": 0,
"category": "kategori string",
"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": "nilai"
}
}
}
}
iOS
Notifikasi APNs di iOS.
Konten notifikasi dikirim oleh MTPush ke server Apple APNs dan ditampilkan di perangkat iOS sebagai notifikasi sistem.
Field notifikasi sesuai spesifikasi APNs dan mendukung:
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| alert | String/JSON | Wajib | Isi notifikasi | |
| sound | String/JSON | Opsional | Suara notifikasi | |
| badge | Int/String | Opsional | Penanda badge aplikasi | |
| content-available | Boolean | Opsional | Push untuk membangunkan | "content-available":true artinya Background Remote Notification, jika tidak, Remote Notification biasa. |
| mutable-content | Boolean | Opsional | Ekstensi notifikasi | Fitur Notification Service Extension di iOS 10 untuk status pengiriman tiap pesan APNs, butuh implementasi Service Extension interface di klien dan gunakan field mutable-content di server. |
| category | String | Opsional | Hanya didukung di iOS 8. Isi field "category" di payload APNs. | |
| extras | JSON Object | Opsional | Field tambahan | Informasi Key/value custom untuk kebutuhan bisnis. |
| thread-id | String | Opsional | Grup notifikasi | Notifikasi remote iOS dikelompokkan berdasarkan property ini. |
| interruption-level | String | Opsional | Level gangguan notifikasi | Untuk iOS 15, level: active,critical,passive,timeSensitive, lihat: UNNotificationInterruptionLevel。 |
Notifikasi iOS untuk MTPush diteruskan ke server APNs. Panjang notifikasi MTPush dibatasi 4000 byte. MTPush menggunakan encoding utf-8, satu karakter Tionghoa = 3 byte.
Contoh pengiriman server:
{
"notification": {
"ios": {
"alert": "hello, Push!",
"sound": "sound.caf",
"badge": 1,
"extras": {
"news_id": 134,
"my_key": "nilai"
}
}
}
}
Pesan yang diterima klien:
{
"_j_msgid" = 813843507;
aps = {
alert = "hello,Push!";
badge = 1;
sound = "sound.caf";
};
"my_key" = "nilai";
"news_id" = 134;
}
hmos
Notifikasi di HarmonyOS ditampilkan oleh MTPush SDK sesuai gaya notifikasi bar. Field yang didukung:
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| alert | String | Wajib | Isi notifikasi | Menimpa alert parent jika diisi. Kosong menyembunyikan dari notifikasi bar. Lihat Batas Push. |
| title | String | Opsional | Judul notifikasi | Menggantikan nama aplikasi jika diisi. Lihat Batas Push. |
| category | String | Wajib | Kategori pesan | Wajib oleh vendor. Ikuti standar kategori pesan Harmony. |
| large_icon | String | Opsional | Ikon besar | Hanya URL HTTPS, misal https://contoh.com/image.png. ≤30KB, width*height < 12800 pixel. |
| intent | JSONObject | Wajib | Target navigasi | Tiga tipe didukung: 1) Beranda aplikasi: action.system.home 2) Deeplink: scheme://host?key=val 3) Action: com.test.action. Contoh: {"url":"action.system.home"}. |
| badge_add_num | Int | Opsional | Tambahan badge | Jika tidak diisi, badge tidak berubah. Rentang 1-99. Ditambah ke badge saat ini. |
| badge_set_num | Int | Opsional | Set nilai badge | Jika tidak diisi, badge tidak berubah. Rentang 0-99. Badge di-set ke nilai tetap. |
| test_message | Boolean | Opsional | Penanda pesan uji | false: normal (default); true: pesan uji. |
| receipt_id | String | Opsional | ID receipt Huawei | ID unik untuk konfigurasi receipt Harmony downlink. |
| extras | JSON | Opsional | Field tambahan | JSON custom K/V untuk bisnis. |
| style | Int | Opsional | Gaya notifikasi | Default 0. 0: normal; 3: multi-line text. |
| inbox_content | [String] | Opsional | Konten multi-line text | Wajib jika style=3. Maks 3 item. Tiap item ≤1024 karakter; dipotong dengan “…”. |
| push_type | Int | Opsional | Tipe push | Default 0. Didukung: 0-notifikasi, 2-notifikasi lanjutan, 10-VoIP call. Lainnya tidak valid. |
| extra_data | String | Opsional | Data tambahan | Mapping ke Huawei extraData. Wajib jika push_type=2 atau 10; diabaikan jika push_type=0. |
| display_foreground | String | Opsional | Tampilkan notifikasi saat app foreground | "1": tampilkan; "0": tidak tampilkan. |
Contoh:
{
"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
Pesan dalam aplikasi (pesan custom, pesan pass-through).
- Tidak tampil di notifikasi bar, SDK MTPush menerima pesan dan meneruskannya ke aplikasi.
- iOS menerima bagian ini melalui channel pesan in-app push (bukan APNS) saat aplikasi di foreground.
Field yang didukung:
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| msg_content | String/JSON | Wajib | Isi pesan |
| title | String | Opsional | Judul pesan |
| content_type | String | Opsional | Tipe konten |
| extras | JSON Object | Opsional | Parameter opsional JSON |
| test_message | Boolean | Opsional | Penanda pesan uji, untuk HarmonyOS |
| receipt_id | String | Opsional | ID receipt Huawei, untuk HarmonyOS |
Contoh:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
Live_activity
Catatan: Pesan aktivitas real-time membutuhkan sertifikat iOS P8, yang sesuai dengan memilih "Konfigurasi Autentikasi Token" di Pengaturan metode autentikasi iOS WebPortal.
Body pesan aktivitas real-time mencakup field berikut:
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| ios | JSON Object | Wajib | Untuk detail field, lihat bagian iOS JSON Object. |
iOS JSON Object
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| event | string | Wajib | Pembuatan: "start", Update: "update", Akhir: "end"; wajib saat event=start |
| attributes-type | string | Opsional | Tipe aktivitas real-time, nilai developer; wajib saat event=start |
| content-state | JSON Object | Wajib | Konten dinamis aktivitas real-time, sesuai nilai SDK klien (content-state Apple). |
| alert | JSON Object | Opsional | Lihat iOS alert JSON Object untuk detail. |
| dismissal-date | int | Opsional | Waktu tampil akhir aktivitas real-time. |
| attributes | JSON Object | Opsional | Konten statis aktivitas real-time, sesuai nilai SDK klien (attributes Apple). |
| stale-date | int | Opsional | Waktu kedaluwarsa aktivitas real-time; jika kurang dari waktu saat ini, aktivitas tidak akan diperbarui. |
| relevance-score | int | Opsional | Prioritas tampil aktivitas real-time di Dynamic Island, nilai 1-100, makin tinggi makin penting; default tertinggi jika tidak diisi. |
| apns-priority | int | Opsional | 5 atau 10, default 10; notifikasi dengan apns-priority=5 tidak mengurangi rate limit Apple, jika melebihi limit maka notifikasi dibatasi. |
iOS alert JSON Object
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| title | string | Opsional | Judul di Apple Watch. |
| body | string | Opsional | Isi di Apple Watch. |
| sound | string | Opsional | Suara notifikasi. |
- Pesan aktivitas real-time iOS untuk Engagelab Push diteruskan ke server Apple. Apple membatasi data update dinamis aktivitas real-time (ActivityKit) maksimal 4096 byte.
- Engagelab Push membatasi total panjang parameter "live_activity" untuk "iOS": { } maksimal 3584 byte. JPush memakai encoding UTF-8, satu karakter Tionghoa = 3 byte.
Contoh Push Aktivitas Real-time
attributes-type dan live_activity_id untuk aktivitas real-time dilaporkan dari SDK developer. Sebelum menggunakan aktivitas real-time, token push-to-start dan update-token perangkat harus dilaporkan. Lihat instruksi aktivitas real-time Apple.
Membuat
{ "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" }Tampilkan blok kode ini di jendela mengambangMemperbarui
{ "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" }Tampilkan blok kode ini di jendela mengambang
Voip
Fungsi VOIP iOS. Tipe ini tidak bisa bersamaan dengan tipe pesan iOS lain. Lihat struktur parameter permintaan:
{
"from": "push",
"to": {
"registration_id": [ "1a0018970a91da03de5" ]
},
"request_id": "12345",
"custom_args": "12345",
"body": {
"platform": "ios",
"voip": {
"key": "value // Key/value custom apa pun yang akan diteruskan ke APP"
}
}
}
Options
Opsi notifikasi push saat ini meliputi:
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| time_to_live | Int/String | Opsional | Waktu retensi pesan offline (detik) | Jika pengguna offline saat push, pesan bisa disimpan dan dikirim ulang saat online. Default 86400 (1 hari), maksimal 15 hari. Jika batas operator lebih kecil, gunakan maksimal operator. Jika 0, pesan offline tidak disimpan; hanya pengguna online saat push yang menerima pesan. |
| override_msg_id | Long | Opsional | ID pesan yang akan dioverride | Untuk menimpa push sebelumnya, masukkan msg_id push sebelumnya. Fitur override berlaku 1 hari. Jika msg_id tidak ada dalam waktu itu, error 7006, dan pesan tidak dikirim. Hanya untuk Android dan channel tertentu. |
| apns_production | Boolean | Opsional | Lingkungan produksi APNs | Hanya untuk Notifikasi iOS. |
| apns_collapse_id | String | Opsional | ID untuk update notifikasi iOS | Jika notifikasi APNs baru sama dengan notifikasi di Notification Center dengan apns-collapse-id yang sama, konten baru akan memperbarui notifikasi tersebut. Maksimal 64 byte. |
| big_push_duration | Int | Opsional | Durasi push bertahap (menit) | Slow push, mendistribusikan push ke pengguna target selama n menit; maksimal 1440. |
| multi_language | json object | Opsional | Pengaturan push multibahasa | Pengaturan konten push multibahasa, lihat multi_language untuk detail. |
| third_party_channel | JSON Object | Opsional | Konfigurasi channel produsen Android | Parameter untuk channel produsen, lihat third_party_channel untuk detail. |
| classification | Int | Opsional | Pengaturan klasifikasi pesan push | EngageLab tidak menilai tipe pesan yang ditentukan. Jika tidak diisi, default 0. 0: Pesan operasional. 1: Pesan sistem. |
| voice_value | String | Opsional | Nilai file suara | Parameter dipisahkan koma, '#' untuk parsing; jika tidak, cocokkan file bahasa default. Bahasa didukung: "en", "zh-Hans", "zh-Hant". Jika bahasa push tidak cocok, konten tidak diubah ke broadcast suara. |
| enhanc_message | Bool | Opsional | Aktifkan tampilan pesan dalam aplikasi | true - aktifkan; false - nonaktifkan. Jika izin notifikasi dimatikan, fitur ini akan menampilkan konten pesan notifikasi bar sebagai pesan dalam aplikasi saat pengguna menjalankan aplikasi di foreground. Default false dan hanya aktif jika diaktifkan eksplisit. |
| plan_id | String | Opsional | Penanda Rencana Push | Harus buat penanda rencana terlebih dahulu. Bisa di konsol atau API. |
| cid | String | Opsional | Penanda permintaan push, mencegah push duplikat | Hanya huruf, angka, underscore, dan minus, maksimal 64 karakter. Harus unik di bawah AppKey yang sama.Cara Menghindari Push Duplikat |
| auto_truncation | bool | Opsional | Apakah otomatis memotong pesan yang terlalu panjang untuk channel vendor | Default true. Jika body pesan ke channel vendor terlalu panjang, otomatis dipotong. Jika tidak ingin dipotong, isi false. |
Multi_language
Field ini untuk fitur push multibahasa dari EngageLab Push. Anda bisa mengirim konten notifikasi yang disesuaikan untuk pengguna dengan bahasa berbeda. Dengan menentukan beberapa bahasa beserta konten pesan, judul, dan subtitle iOS pada permintaan push, Anda dapat mengirim notifikasi push yang sesuai dengan pengaturan bahasa pengguna.
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| en | string | Opsional | Kode bahasa | Sesuai bahasa pengguna, lihat lampiran kode bahasa. |
| content | string | Opsional | Isi pesan | Mengganti data di notification.android.alert, notification.ios.alert, notification.web.alert, dan message.msg_content sesuai bahasa pengguna. |
| title | string | Opsional | Judul pesan | Mengganti data di notification.android.title, notification.ios.alert, notification.web.title, dan message.title sesuai bahasa pengguna. |
| ios_subtitle | string | Opsional | Subtitle iOS | Mengganti data di notification.ios.alert sesuai bahasa pengguna. |
- Catatan HarmonyOS: Untuk HarmonyOS, gunakan
third_party_channel.hmos.distribution_new. Tidak terpengaruh oleh konfigurasi global.
Contoh Permintaan
Metode HTTP: POST
URL Permintaan: /v4/grouppush atau /v4/push
Format Data Permintaan: JSON
Contoh Permintaan:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
"ios_subtitle": ""
}
}
}
}
Contoh Respons
Respons Berhasil:
{
}
Respons Gagal:
{
"code": 400,
"data": "",
"message": "Pesan Error"
}
Third_party_channel
Field ini digunakan untuk mengisi informasi personalisasi channel produsen Android, key mendukung channel: xiaomi, huawei, meizu, oppo, vivo, fcm, honor, hmos. Bisa ada satu atau lebih bersamaan, KEY tiap vendor dapat berisi opsi berikut:
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Makna | Deskripsi |
|---|---|---|---|---|
| distribution_new | String | Wajib | _ | Jika Engagelab dan channel vendor bersamaan, atur prioritas downlink. |
| channel_id | String | Opsional | Kategori pesan notifikasi bar | channel_id juga tersedia di Android. Jika field ini diisi, akan diutamakan; jika tidak, gunakan android.channel_id.category dan notify_level di bawah. |
| classification | Int | Opsional | Kategori pesan notifikasi bar | Kategori pesan notifikasi bar produsen vivo, default 0. |
| pushMode | Int | Opsional | Mode push vivo | Default 0. Lihat pushMode vivoUntuk push uji, harus atur ID perangkat uji di backend vivo. |
| importance | String | Opsional | Klasifikasi cerdas pesan notifikasi Huawei/Glory | Untuk adaptasi klasifikasi cerdas notifikasi bar Huawei, sesuai field importance Huawei, default "NORMAL", lihat: Klasifikasi pesan Huawei。 |
| urgency | String | Opsional | Prioritas pesan custom vendor Huawei | Untuk adaptasi prioritas pesan custom vendor Huawei. |
| category | String | Opsional | Logo skenario pesan custom vendor Huawei | |
| notify_level | Int | Opsional | Level alert pesan notifikasi bar OPPO | |
| small_icon_uri | String | Opsional | Gaya ikon kecil pesan vendor | |
| small_icon_color | String | Opsional | Warna gaya ikon kecil produsen Xiaomi | |
| big_text | String | Opsional | Gaya teks besar pesan vendor | |
| only_use_vendor_style | Boolean | Opsional | Apakah hanya menggunakan gaya channel sendiri | |
| big_picture_id | String | Opsional | ID gambar besar OPPO | |
| small_picture_id | String | Opsional | ID ikon kecil OPPO |
Untuk menyatukan strategi multi-channel vendor dan menyederhanakan logika konfigurasi, metode konfigurasi field
distribution_newdisesuaikan sebagai berikut. Konfigurasi level vendor lama Anda tetap berlaku, tetapi disarankan untuk beralih secara bertahap ke konfigurasi global untuk menghindari risiko kompatibilitas di masa depan. (Aturan baru berlaku mulai 2025.04.03):
- Prioritas Konfigurasi (Aturan Baru)
- Prioritas Pertama: Konfigurasi global
third_party_channel.distribution_new(Metode baru yang direkomendasikan)
Contoh:"distribution_new": "pns_mtpush" - Prioritas Kedua: Konfigurasi level vendor
third_party_channel.{vendor_key}.distribution_new(Metode kompatibel lama)
Hanya berlaku saat konfigurasi global tidak diatur - Tanpa Konfigurasi: strategi default: pns_mtpush
- Prioritas Pertama: Konfigurasi global
Catatan Kompatibilitas
- Jaminan Kompatibilitas: Konfigurasi level vendor lama tetap berfungsi jika field global tidak diatur, memastikan tidak ada dampak pada layanan yang ada.
- Resolusi Konflik: Jika field global dan level vendor keduanya dikonfigurasi, hanya nilai global yang akan dibaca, dan konfigurasi level vendor akan diabaikan.
- Rencana Jangka Panjang:
distribution_newlevel vendor mungkin akan dihapus di versi mendatang. Silakan adaptasi terlebih dahulu jika memungkinkan.
Contoh Permintaan
{
"third_party_channel": {
"distribution_new": "pns_mtpush",
"xiaomi": {
"channel_id": "*******",
"small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png",
"small_icon_color": "#ABCDEF"
},
"huawei": {
"importance": "NORMAL",
"small_icon_uri": "https://xx.com/xx.jpg",
"only_use_vendor_style": true
},
"oppo": {
"channel_id": "*******",
"big_picture_id": "",
"small_picture_id": ""
},
"vivo": {
"pushMode": 0
},
"hmos": {
"distribution_new": "pns_mtpush"
}
}
}
Request_id
ID permintaan, field opsional yang ditentukan oleh pelanggan. Digunakan oleh klien untuk mengidentifikasi permintaan mana yang sedang dibuat dan dikembalikan pada respons.
Contoh Permintaan
{
"request_id":"12345678"
}
Contoh Pengembalian
{
"msg_id": "1225764",
"request_id": "12345678"
}
Custom_args
Ditentukan oleh pelanggan, field opsional yang tidak dikembalikan pada respons dan dikembalikan pada callback.
Contoh Permintaan
{
"custom_args":{
"args1": "args1"
}
}
Parameter Pengembalian
Pengembalian Berhasil
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| request_id | String | Opsional | ID kustom yang dikirim saat permintaan dikembalikan apa adanya pada respons. |
| message_id | String | Wajib | ID pesan, yang secara unik mengidentifikasi sebuah pesan. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id":"18","msg_id":"1828256757"}
Pengembalian Gagal
Kode status http adalah 4xx atau 5xx dan body respons berisi field berikut:
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| code | int | Wajib | Kode error, lihat deskripsi Kode Error |
| message | String | Wajib | Detail Error |
{
"error":{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
}
Pengembalian Panggilan
Kode Status HTTP
Dokumen Referensi:HTTP-Status-Code
Kode Error
| Kode | Deskripsi | Penjelasan Detail | Kode Status HTTP |
|---|---|---|---|
| 20101 | Parameter push tidak valid | ID registrasi tidak valid atau bukan milik appkey saat ini | 400 |
| 21001 | Hanya mendukung metode HTTP Post | Tidak mendukung metode Get | 405 |
| 21002 | Parameter wajib tidak ada | Harus diperbaiki | 400 |
| 21003 | Nilai parameter tidak valid | Harus diperbaiki | 400 |
| 21004 | Verifikasi gagal | Harus diperbaiki, lihat: Verifikasi panggilan | 401 |
| 21005 | Body pesan terlalu besar | Harus diperbaiki, batas panjang Notifikasi/Pesan adalah 4000 byte | 400 |
| 21008 | Parameter app_key tidak valid | Harus diperbaiki, periksa appkey yang dikirim dengan info aplikasi, periksa spasi tambahan | 400 |
| 21009 | Error sistem internal | Silakan hubungi tim support | 400 |
| 21011 | Tidak ditemukan target push yang sesuai | Periksa field 'to' | 400 |
| 21015 | Validasi parameter permintaan gagal | Terdapat parameter yang tidak diharapkan | 400 |
| 21016 | Validasi parameter permintaan gagal | Tipe parameter error, atau panjang parameter melebihi batas | 400 |
| 21030 | Timeout layanan internal | Coba lagi nanti | 503 |
| 21050 | Parameter event live_activity salah | Parameter event harus "start", "update", atau "end" | 400 |
| 21051 | Parameter audience live_activity salah | Saat membuat live activity, target push hanya bisa broadcast atau berbasis registrasi | 400 |
| 21052 | Parameter attributes-type live_activity salah | Saat event=start, attributes-type tidak boleh kosong | 400 |
| 21053 | Parameter content-state live_activity salah | Content-state tidak boleh kosong | 400 |
| 21054 | Error parameter live_activity, notifikasi dan pesan kustom tidak boleh bersamaan | voip, message, notification, live_activity tidak bisa bersamaan | 400 |
| 21055 | live_activity ios non-p8 certificate | Live activity hanya mendukung sertifikat p8 | 400 |
| 21056 | live_activity hanya mendukung platform ios | Parameter platform harus ios | 400 |
| 21057 | Pesan voip tidak boleh bersamaan dengan tipe pesan lain | voip, message, notification, live_activity tidak bisa bersamaan | 400 |
| 21058 | voip hanya mendukung platform ios | Parameter platform harus ios | 400 |
| 23006 | Error parameter | Push fixed-rate big_push_duration melebihi nilai maksimum 1440 | 400 |
| 23008 | Antarmuka dibatasi rate | QPS antarmuka push aplikasi tunggal mencapai batas (500 qps) | 400 |
| 23009 | Error izin push | Alamat IP push saat ini tidak ada di whitelist IP aplikasi | 400 |
| 27000 | Error memori internal | Silakan coba lagi | 500 |
| 27001 | Error parameter | Informasi verifikasi kosong | 401 |
| 27008 | Error parameter | Distribution di third_party_channel tidak kosong, tetapi konten alert notifikasi kosong | 401 |
| 27009 | Error parameter | Format distribution di third_party_channel tidak valid atau kosong | 401 |
| 21038 | Error izin push | VIP kedaluwarsa atau tidak diaktifkan | 401 |
| 21306 | Error parameter | Pesan notifikasi dan pesan kustom tidak bisa dipush bersamaan | 401 |
| 21059 | Error parameter | Tipe pesan ini tidak mendukung big_push_duration | 401 |
Batasan Push
| Channel Vendor | Panjang Judul | Panjang Konten | Kata Sensitif | Catatan Lain |
|---|---|---|---|---|
| Channel Engagelab | Tidak dibatasi, tapi total ukuran pesan dibatasi | Tidak dibatasi, tapi total ukuran pesan dibatasi | Kata yang dikonfigurasi berdasarkan fitur kata sensitif | Panjang Notifikasi/Pesan di MTPush dibatasi 4000 byte. |
| Channel Huawei | Tidak dibatasi, tapi total ukuran pesan < 4096 byte, disarankan judul ≤ 40 karakter | Tidak dibatasi, tapi total ukuran pesan < 4096 byte, disarankan konten ≤ 1024 karakter | Dilarang membawa konten terkait pemerintah, nama pemimpin, kemerdekaan Taiwan, dll. | Izin default untuk [Notifikasi Pemasaran] adalah notifikasi senyap, tanpa suara atau getaran. |
| Channel Honor | Tidak dibatasi, tapi total ukuran pesan < 4096 byte | Tidak dibatasi, tapi total ukuran pesan < 4096 byte | Dilarang membawa konten terkait pemerintah, nama pemimpin, kemerdekaan Taiwan, dll. | - |
| Channel Meizu | ≤ 32 karakter | ≤ 100 karakter | Karakter khusus seperti # dilarang | |
| Channel Xiaomi | ≤ 50 karakter | ≤ 128 karakter | Karakter khusus seperti #, >> dilarang | |
| Channel OPPO | ≤ 50 karakter | Panjang konten dibatasi oleh gaya notifikasi: 1) Gaya standar (style=1): panjang string konten ≤ 50; 2) Gaya teks panjang (style=2): panjang string konten ≤ 128; 3) Gaya gambar besar (style=3): panjang string konten ≤ 50. | Kata yang dikonfigurasi berdasarkan fitur kata sensitif | Perhitungan panjang string: Karakter Cina, Inggris, dan simbol khusus (misalnya emoji) semuanya dihitung sebagai 1 karakter. |
| Channel vivo | ≤ 40 karakter | ≤ 100 karakter | ||
| Channel APNS | ≤ 20 karakter (40 karakter Inggris), bagian yang melebihi akan menampilkan elipsis. | Kata yang dikonfigurasi berdasarkan fitur kata sensitif | Ukuran body pesan dibatasi 4 KB (4096 byte). Ukuran maksimum untuk notifikasi VoIP adalah 5 KB (5120 byte). | |
| Channel FCM | Tidak dibatasi, tapi total ukuran pesan dibatasi | Tidak dibatasi, tapi total ukuran pesan dibatasi | Kata yang dikonfigurasi berdasarkan fitur kata sensitif | Panjang Notifikasi/Pesan di MTPush dibatasi 4000 byte. |
| Channel Harmony | Tidak dibatasi, tapi total ukuran pesan dibatasi | Tidak dibatasi, tapi total ukuran pesan dibatasi | Kata yang dikonfigurasi berdasarkan fitur kata sensitif | Ukuran body pesan tidak boleh melebihi 4096 Byte (tidak termasuk Push Token). |
Kode Multi-bahasa
| Bahasa | Kode |
|---|---|
| Inggris | en |
| Arab | ar |
| Cina (Sederhana) | zh-Hans |
| Cina (Tradisional) | zh-Hant |
| Ceko | cs |
| Denmark | da |
| Belanda | nl |
| Prancis | fr |
| Jerman | de |
| Hindi | hi |
| Italia | it |
| Jepang | ja |
| Korea | ko |
| Melayu | ms |
| Rusia | ru |
| Spanyol | es |
| Thailand | th |
| Vietnam | vi |
| Indonesia | id |
| Norwegia | no |
| Swedia | sv |
| Polandia | pl |
| Turki | tr |
| Ibrani | he |
| Portugis | pt |
| Rumania | ro |
| Hungaria | hu |
| Finlandia | fi |
| Yunani | el |
| Ukraina | uk |
| Laos | lo |
| Portugis (Portugal) | pt_PT |
| Portugis (Brasil) | pt_BR |
| Spanyol (Argentina) | es_AR |
| Spanyol (Spanyol) | es_ES |
| Spanyol (Amerika Latin) | es_419 |










