สร้าง API การส่งข้อความ
ส่งการแจ้งเตือนหรือข้อความไปยังอุปกรณ์เดียวหรือรายการอุปกรณ์
เนื้อหาที่ส่งจะต้องเป็นวัตถุ JSON เท่านั้น
นี่คือเวอร์ชันล่าสุดของ Push API การปรับปรุงในเวอร์ชัน v4 รวมถึง:
- การอนุญาตการเข้าถึงโดยใช้ HTTP Basic Authentication วิธีนี้ช่วยให้สามารถใช้เครื่องมือ HTTP ทั่วไป (เช่น: curl, ปลั๊กอินเบราว์เซอร์ ฯลฯ) เพื่อดำเนินการคำขอ API ทั้งหมด
- เนื้อหาที่ส่งใช้รูปแบบ JSON ทั้งหมด
ข้อจำกัดอัตราการร้องขอ
API ของเรามีการจำกัดความถี่ในการเรียกใช้งานเพื่อให้มั่นใจถึงความเสถียรและความยุติธรรมของบริการ QPS (จำนวนคำขอต่อวินาที) สำหรับแต่ละ AppKey มีข้อจำกัดดังนี้:
- ข้อจำกัดมาตรฐาน: สูงสุด 500 คำขอต่อวินาที
- ข้อจำกัดขั้นสูง: หากคุณเป็นสมาชิกแผนชำระเงินของเราและ AppKey ของคุณต้องการข้อจำกัด QPS ที่สูงขึ้น โปรดติดต่อทีมธุรกิจของเรา: Sales@engagelab.com
วิธีการร้องขอ
POST
ที่อยู่การเรียกใช้งาน
ที่อยู่บริการอินเทอร์เฟซสอดคล้องกับจุดเชื่อมต่อของศูนย์ข้อมูลที่เลือก โปรดเลือกที่อยู่การเรียกใช้งานที่ตรงกับจุดเชื่อมต่อบริการแอปพลิเคชันของคุณ
ปัจจุบัน EngageLab ได้ปรับใช้และสนับสนุนจุดเชื่อมต่อศูนย์ข้อมูลสองแห่ง โดยข้อมูลระหว่างจุดเชื่อมต่อบริการที่แตกต่างกันจะถูกแยกออกจากกันโดยสมบูรณ์ คุณสามารถเลือกที่อยู่การเรียกใช้งานตามจุดเชื่อมต่อศูนย์ข้อมูลที่เลือกเมื่อสร้างผลิตภัณฑ์
POST v4/push
การตรวจสอบการเรียกใช้งาน
สำหรับข้อมูลเพิ่มเติม โปรดดู วิธีการรับรองความถูกต้อง ในภาพรวม REST API
ตัวอย่างคำขอ
ส่วนหัวของคำขอ
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
เนื้อหาคำขอ
{
"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"
}
}'
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
พารามิเตอร์คำขอ
โครงสร้างพารามิเตอร์การส่งมีดังตารางด้านล่าง:
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย |
---|---|---|---|
from | String | ฟิลด์ตัวเลือก | ผู้ส่งบริการปัจจุบัน |
to | String หรือ JSON | ฟิลด์บังคับ | เป้าหมายการส่ง |
body | JSON | ฟิลด์บังคับ | เนื้อหาคำขอ |
platform | String หรือ JSON | ฟิลด์บังคับ | แพลตฟอร์มการส่ง |
notification | JSON | ฟิลด์ตัวเลือก | |
message | JSON | ฟิลด์ตัวเลือก | |
options | JSON | ฟิลด์ตัวเลือก | พารามิเตอร์การส่ง |
request_id | String | ฟิลด์ตัวเลือก | ฟิลด์ตัวเลือกที่กำหนดเองโดยลูกค้า เพื่อระบุว่าการตอบสนองนั้นมาจากคำขอใด |
custom_args | JSON | ฟิลด์ตัวเลือก | ฟิลด์ตัวเลือกที่กำหนดเองโดยลูกค้า ซึ่งจะถูกส่งกลับให้ลูกค้าในการเรียกกลับ ค่าไม่เกิน 128 อักขระ |
from
ผู้ส่งบริการปัจจุบัน ประเภท String ฟิลด์ตัวเลือก
ตัวอย่างคำขอ
{
"from":"push"
}
to
วัตถุอุปกรณ์ที่ส่ง หมายถึงรายการอุปกรณ์ที่สามารถส่งได้ เพื่อยืนยันวัตถุอุปกรณ์ที่ส่ง App Push มีวิธีการหลายแบบ เช่น: ชื่อเล่น, ป้ายกำกับ, รหัสลงทะเบียน, กลุ่มย่อย, การกระจาย ฯลฯ
เป้าหมายการส่ง
นอกจากการกระจายแล้ว ยังมีวิธีการเลือกอุปกรณ์หลายแบบ ดังนี้:
คำสำคัญ | ประเภท | ความหมาย | คำอธิบาย | ข้อควรระวัง |
---|---|---|---|---|
all | String | การกระจาย | ส่งไปยังอุปกรณ์ทั้งหมด | เป้าหมายการส่งคืออุปกรณ์ที่ใช้งานในช่วง 365 วันที่ผ่านมา |
tag | JSON Array | ป้ายกำกับ | อาเรย์ ป้ายกำกับหลายตัวเป็นความสัมพันธ์ OR | ใช้ป้ายกำกับเพื่อจัดกลุ่มคุณสมบัติอุปกรณ์หรือผู้ใช้จำนวนมาก |
tag_and | JSON Array | ป้ายกำกับ AND | อาเรย์ ป้ายกำกับหลายตัวเป็นความสัมพันธ์ AND | โปรดสังเกตความแตกต่างจาก tag ส่งได้สูงสุด 20 ป้ายกำกับ |
tag_not | JSON Array | ป้ายกำกับ NOT | อาเรย์ ป้ายกำกับหลายตัว ก่อนอื่นจะรวมป้ายกำกับหลายตัว จากนั้นจึงหาผลลัพธ์ที่ตรงข้าม | ส่งได้สูงสุด 20 ป้ายกำกับ |
alias | JSON Array | ชื่อเล่น | อาเรย์ ชื่อเล่นหลายตัวเป็นความสัมพันธ์ OR | ใช้ชื่อเล่นระบุผู้ใช้ |
registration_id | JSON Array | รหัสลงทะเบียน | อาเรย์ รหัสลงทะเบียนหลายตัวเป็นความสัมพันธ์ OR | ตัวระบุอุปกรณ์ ส่งได้สูงสุด 1000 รหัส |
live_activity_id | String | ตัวระบุการทำงานสด | ค่าที่ตรงกับ liveActivityId ใน iOS SDK | จำเป็นต้องให้เมื่ออัปเดตกิจกรรมสด |
seg | JSON | User group ID | รหัสของกลุ่มผู้ใช้ที่สร้างขึ้นบนหน้าเพจ กำหนดเป็นอาร์เรย์ แต่ปัจจุบันจำกัดให้สามารถส่งได้ครั้งละหนึ่งรายการเท่านั้น | ปัจจุบันมีข้อจำกัดที่สามารถส่งได้เพียงครั้งละหนึ่งรายการเท่านั้น |
ค่าหลายตัวในอาเรย์มีความสัมพันธ์เป็น OR โดยปริยาย คือการรวมกัน; แต่ tag_and แตกต่างกัน ค่าหลายตัวในอาเรย์มีความสัมพันธ์เป็น AND คือการตัดกัน
หากใช้ tag_not เพียงอย่างเดียว เราจะดำเนินการประมวลผล tag_not ในกลุ่มผู้ใช้ที่ได้รับการกระจายข้อมูล
ประเภทเหล่านี้สามารถอยู่ร่วมกันได้ เมื่ออยู่ร่วมกัน ความสัมพันธ์โดยปริยายระหว่างหลายพหุนามคือ AND คือการตัดกัน เช่น:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
คำนวณผลลัพธ์ของฟิลด์ "tag" ก่อน tag1 or tag2 = A
;
จากนั้นคำนวณผลลัพธ์ของฟิลด์ "tag_and" tag3 and tag4 = B
;
จากนั้นคำนวณผลลัพธ์ของฟิลด์ "tag_not" not (tag5 or tag6) = C
;
ผลลัพธ์สุดท้ายของ "to" คือ A and B and C
ตัวอย่าง
- ส่งไปยังทั้งหมด (broadcast):
{
"to": "all",
}
- ส่งไปยังหลายแท็ก (เพียงแค่ตรงกับแท็กใดแท็กหนึ่ง): ในเซินเจิ้น, กว่างโจว หรือปักกิ่ง
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou",
"Beijing"
]
}
}
- ส่งไปยังหลายแท็ก (ต้องอยู่ในช่วงของแท็กหลายแท็กพร้อมกัน): ในเซินเจิ้นและ "ผู้หญิง"
{
"to":{
"tag_and":[
"Shenzhen",
"female"
]
}
}
- ส่งไปยังหลายชื่อเล่น:
{
"to":{
"alias":[
"4314",
"892",
"4531"
]
}
}
- ส่งไปยังหลายหมายเลขการลงทะเบียน:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
- สามารถส่งพร้อมกันไปยังเป้าหมายการส่งหลายประเภท: ในเซินเจิ้นหรือกว่างโจวและเป็น "ผู้หญิง" "สมาชิก"
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou"
],
"tag_and":[
"female",
"members"
]
}
}
- ส่งข้อความกิจกรรมสด
{
"to": {
"live_activity_id": "LiveActivity-1"
}
}
ส่งไปยัง ID การแบ่งกลุ่มผู้ใช้:
{
"to": {
"seg": {
"id":"segid"
}
}
}
เนื้อหา
ส่งเนื้อหาคำขอ ฟิลด์ที่รองรับมีดังนี้:
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย |
---|---|---|---|
platform | String หรือ JSON Array | จำเป็น | แพลตฟอร์มที่ส่ง |
notification | JSON Object | ตัวเลือก | |
message | JSON Object | ตัวเลือก | |
live_activity | JSON Object | ตัวเลือก | |
options | JSON Object | ตัวเลือก | พารามิเตอร์การส่ง |
แพลตฟอร์ม
MTPush รองรับการส่งสำหรับแพลตฟอร์ม Android และ iOS คำสำคัญคือ: "android", "ios" ตามลำดับ
หากเป้าหมายแพลตฟอร์มคือ iOS คุณต้องตั้งค่าสภาพแวดล้อมการส่งโดยฟิลด์ apns_production ใน options true หมายถึงส่งสภาพแวดล้อม dev, False หมายถึงส่งสภาพแวดล้อมการพัฒนา
ส่งไปยังทุกแพลตฟอร์ม:
{ "platform" : "all" }
กำหนดแพลตฟอร์มการส่งเฉพาะ:
{
"platform": [
"android",
"ios"
]
}
การแจ้งเตือน
วัตถุ "Notification" ซึ่งเป็นหนึ่งในวัตถุเนื้อหาของการส่ง (อีกอันคือ "Message") จะถูกส่งไปยังไคลเอนต์ในรูปแบบ "Notification"
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
alert | String หรือ JSON Object | ฟิลด์ที่จำเป็น | เนื้อหา | เนื้อหาของข้อความเอง หาก alert ไม่ได้ระบุภายใต้ android หรือ ios จะถูกใช้แทน |
android | JSON Object | ตัวเลือก | คุณสมบัติแพลตฟอร์ม android | พารามิเตอร์การส่งแพลตฟอร์ม Android ดู คำอธิบาย android |
ios | JSON Object | ตัวเลือก | คุณสมบัติแพลตฟอร์ม ios | พารามิเตอร์การส่งแพลตฟอร์ม ios ดู คำอธิบาย ios |
การแจ้งเตือน
คุณสมบัติ "alert" ในตำแหน่งนี้ (โดยตรงภายใต้วัตถุ notification) เป็นการกำหนดแบบย่อ และหากข้อความแจ้งเตือนเหมือนกันในทุกแพลตฟอร์ม alert อาจไม่ถูกกำหนดภายใต้แพลตฟอร์ม และจะใช้ข้อความนี้แทน หากมีการกำหนดสำหรับแต่ละแพลตฟอร์ม จะมีการแทนที่การกำหนดที่นี่
{
"notification" : {
"alert" : "Hello, Push!"
}
}
วัตถุการแจ้งเตือนที่กำหนดข้างต้นจะถูกส่งไปยังหลายแพลตฟอร์มที่ระบุโดย "platform" และทั้งหมดจะมีข้อความการแจ้งเตือนเหมือนกัน
Android
การแจ้งเตือนบนแพลตฟอร์ม Android จะแสดงโดย MTPush SDK ตามรูปแบบแถบการแจ้งเตือนที่กำหนดไว้ ฟิลด์ที่รองรับมีดังนี้:
คำสำคัญ | ประเภทข้อมูล | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
alert | String หรือ JSON Object | จำเป็นต้องระบุ | เนื้อหาการแจ้งเตือน | |
title | String | ตัวเลือก | หัวข้อการแจ้งเตือน | |
builder_id | Int | ตัวเลือก | ID รูปแบบแถบการแจ้งเตือน | Android SDK สามารถ ตั้งค่ารูปแบบการแจ้งเตือนที่กำหนดเอง และฟิลด์นี้ระบุว่าจะใช้รูปแบบใด |
channel_id | String | ตัวเลือก | ID ช่องทางการแจ้งเตือนของ Android | สูงสุด 1000 ไบต์ ตั้งแต่ Android 8.0 เป็นต้นไป คุณสามารถ กำหนดค่าช่องทางการแจ้งเตือน ฟิลด์นี้ระบุผลการแสดงแถบการแจ้งเตือนตาม ID ช่องทาง |
priority | Int | ตัวเลือก | ลำดับความสำคัญของการแสดงแถบการแจ้งเตือน | ค่าเริ่มต้นคือ 0 โดยมีช่วงตั้งแต่ -2 ถึง 2 |
category | String | ตัวเลือก | การกรองหรือการจัดลำดับรายการในแถบการแจ้งเตือน | ขึ้นอยู่กับกลยุทธ์การจัดการของผู้ผลิตสำหรับหมวดหมู่ |
style | Int | ตัวเลือก | ประเภทของรูปแบบแถบการแจ้งเตือน | ใช้ระบุประเภทของรูปแบบแถบการแจ้งเตือน ค่าเริ่มต้นคือ 0,1=bigText,2=Inbox,3=bigPicture |
big_text | String | ตัวเลือก | รูปแบบแถบการแจ้งเตือนแบบข้อความใหญ่ | |
inbox | JSONObject | ตัวเลือก | รูปแบบแถบการแจ้งเตือนแบบรายการข้อความ | {"box0":"content1"} |
big_pic_path | String | ตัวเลือก | รูปแบบแถบการแจ้งเตือนแบบรูปภาพใหญ่ | |
extras | JSON Object | ตัวเลือก | ฟิลด์เพิ่มเติม | กำหนดข้อมูล Key/Value ที่กำหนดเองในรูปแบบ JSON สำหรับการใช้งานธุรกิจ |
intent | JSON Object | ตัวเลือก | ระบุหน้าเป้าหมายสำหรับการนำทาง (แนะนำ) | ใช้ฟิลด์ intent เพื่อระบุหน้าเป้าหมายที่จะนำทางเมื่อคลิกที่แถบการแจ้งเตือน ขอแนะนำให้กรอกฟิลด์ intent มิฉะนั้นการคลิกที่การแจ้งเตือนอาจไม่มีการกระทำการนำทาง ฟิลด์นี้รองรับสามประเภท:intent:#Intent;action=action path;component= package name /full activity name;end intent:#Intent;action=android.intent.action.MAIN;end (ที่อยู่คงที่)scheme://test?key1=val1&key2=val2 |
large_icon | String | ตัวเลือก | ไอคอนการแจ้งเตือนขนาดใหญ่ | |
small_icon | String | ตัวเลือก | ไอคอนการแจ้งเตือนขนาดเล็ก | |
sound | String | ตัวเลือก | เสียง | |
badge_add_num | Int | ตัวเลือก | ตั้งค่าค่าที่เพิ่มขึ้นสำหรับหมายเลขตราสัญลักษณ์, เพื่อเพิ่มไปยังหมายเลขตราสัญลักษณ์เดิม | |
badge_set_num | Int | ตัวเลือก | กำหนดค่าคงที่สำหรับหมายเลขตรา | |
badge_class | String | ตัวเลือก | คลาสกิจกรรมทางเข้าแอปพลิเคชันที่สอดคล้องกับไอคอนบนเดสก์ท็อป เช่น "com.test.badge.MainActivity" | |
display_foreground | String | ตัวเลือก | แอปอยู่ในเบื้องหน้า ควรแสดงการแจ้งเตือนหรือไม่ | |
group_id | String | ตัวเลือก | ID กลุ่มข้อความ | ตัวระบุเฉพาะสำหรับการจัดกลุ่มข้อความ ใช้เพื่อควบคุมผลการยุบข้อความ รองรับตั้งแต่ MTPush Android SDK เวอร์ชัน 5.0.1 |
{
"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 บนแพลตฟอร์ม iOS
เนื้อหาการแจ้งเตือนถูกส่งโดยตัวแทน MTPush ไปยังเซิร์ฟเวอร์ Apple APNs และแสดงบนอุปกรณ์ iOS เป็นการแจ้งเตือนระบบ
เนื้อหาการแจ้งเตือนตรงตามข้อกำหนด APNs และรองรับฟิลด์ต่อไปนี้:
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
alert | String หรือ JSON Object | ฟิลด์ที่จำเป็นต้องระบุ | เนื้อหาการแจ้งเตือน | |
sound | String หรือ JSON Object | ตัวเลือก | เสียงการแจ้งเตือน | |
badge | Int หรือ String | ตัวเลือก | ใช้เครื่องหมายมุม | |
content-available | Boolean | ตัวเลือก | การส่งเพื่อปลุก | สำหรับรายละเอียด โปรดดูที่: "content-available":true เมื่อส่ง หมายความว่าเป็น Background Remote Notification หากไม่มี จะเป็น Remote Notification ปกติ:Background Remote Notification |
mutable-content | Boolean | ตัวเลือก | ส่วนขยายการแจ้งเตือน | ฟีเจอร์ Notification Service Extension ที่เพิ่มใน iOS 10 เพื่อรายงานสถานะการส่งของแต่ละข้อความ APNs การใช้ฟีเจอร์นี้ต้องการให้ไคลเอนต์ ดำเนินการอินเทอร์เฟซ Service Extensionและใช้ฟิลด์ mutable-content บนเซิร์ฟเวอร์เพื่อทำการตั้งค่าให้สมบูรณ์ |
category | String | ตัวเลือก | รองรับเฉพาะใน iOS 8 ตั้งค่าค่าของฟิลด์ "category" ใน payload ของ APNs | |
extras | JSON Object | ตัวเลือก | ฟิลด์เพิ่มเติม | ที่นี่ข้อมูล Key/value ถูกกำหนดเองสำหรับการใช้งานธุรกิจ |
thread-id | String | ตัวเลือก | กลุ่มการแจ้งเตือน | การแจ้งเตือนระยะไกลของ iOS ถูกจัดกลุ่มตามคุณสมบัตินี้ เพื่อให้การแจ้งเตือนจาก thread-id เดียวกันถูกจัดกลุ่มเข้าด้วยกัน |
interruption-level | String | ตัวเลือก | ระดับการรบกวนของการแจ้งเตือนสำหรับลำดับความสำคัญและเวลาการส่ง | สำหรับ iOS 15 ระดับการแจ้งเตือนสามารถเป็น active,critical,passive,timeSensitive เท่านั้น โปรดดูที่:UNNotificationInterruptionLevel。 |
การแจ้งเตือน iOS สำหรับ MTPush จะถูกส่งต่อไปยังเซิร์ฟเวอร์ APNs ความยาวการแจ้งเตือนใน MTPush ถูกจำกัดไว้ที่ 4000 ไบต์ MTPush ใช้การเข้ารหัส utf-8 เมื่อส่ง ดังนั้นตัวอักษรจีนหนึ่งตัวจะใช้พื้นที่ 3 ไบต์ในความยาว
ตัวอย่างการส่งฝั่งเซิร์ฟเวอร์:
{
"notification": {
"ios": {
"alert": "hello, Push!",
"sound": "sound.caf",
"badge": 1,
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
ข้อความที่ได้รับโดยไคลเอนต์:
{
"_j_msgid" = 813843507;
aps = {
alert = "hello,Push!";
badge = 1;
sound = "sound.caf";
};
"my_key" = "a value";
"news_id" = 134;
}
ข้อความ
ข้อความในแอปพลิเคชัน หรือเรียกอีกชื่อว่า: ข้อความที่กำหนดเอง, ข้อความผ่าน
- ส่วนนี้จะไม่แสดงในแถบการแจ้งเตือน, MTPush SDK จะรับเนื้อหาข้อความและส่งต่อไปยังแอปพลิเคชัน
- iOS เมื่อแอปพลิเคชันอยู่ในโหมดเบื้องหน้า จะได้รับส่วนนี้ผ่านช่องทางข้อความในแอปพลิเคชัน (ไม่ใช่ APNS)
ฟิลด์ที่รองรับมีดังนี้:
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย |
---|---|---|---|
msg_content | String หรือ JSON Object | จำเป็นต้องกรอก | เนื้อหาข้อความ |
title | String | ไม่จำเป็น | หัวข้อข้อความ |
content_type | String | ไม่จำเป็น | ประเภทเนื้อหาข้อความ |
extras | JSON Object | ไม่จำเป็น | พารามิเตอร์เพิ่มเติมในรูปแบบ JSON |
ตัวอย่าง:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
กิจกรรมแบบเรียลไทม์
หมายเหตุ: ข้อความกิจกรรมแบบเรียลไทม์จำเป็นต้องใช้ใบรับรอง iOS P8 และเลือกการตั้งค่าการรับรอง iOS WebPortal ในหัวข้อ "การตั้งค่าการรับรองโทเค็น"
เนื้อหาข้อความกิจกรรมแบบเรียลไทม์ประกอบด้วยฟิลด์ดังต่อไปนี้:
คำสำคัญ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
ios | JSON Object | จำเป็น | ดูฟิลด์รายละเอียดเพิ่มเติมที่ iOS JSON Object |
iOS JSON Object
คำสำคัญ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
event | string | จำเป็น | สร้าง: "start", อัปเดต: "update", สิ้นสุด: "end"; เมื่อ event=start จำเป็นต้องกรอก |
attributes-type | string | ไม่จำเป็น | ประเภทกิจกรรมแบบเรียลไทม์ กำหนดค่าโดยนักพัฒนา; เมื่อ event=start จำเป็นต้องกรอก |
content-state | JSON Object | จำเป็น | เนื้อหาแบบไดนามิกของกิจกรรมแบบเรียลไทม์ ต้องตรงกับค่าของ SDK ฝั่งไคลเอนต์ (สอดคล้องกับฟิลด์ content-state ของ Apple) |
alert | JSON Object | ไม่จำเป็น | ดูรายละเอียดเพิ่มเติมที่ iOS alert JSON Object |
dismissal-date | int | ไม่จำเป็น | เวลาสิ้นสุดการแสดงกิจกรรมแบบเรียลไทม์ |
attributes | JSON Object | ไม่จำเป็น | เนื้อหาแบบสแตติกของกิจกรรมแบบเรียลไทม์ ต้องตรงกับค่าของ SDK ฝั่งไคลเอนต์ (สอดคล้องกับฟิลด์ attributes ของ Apple) |
stale-date | int | ไม่จำเป็น | เวลาหมดอายุของกิจกรรมแบบเรียลไทม์; หากน้อยกว่าปัจจุบัน กิจกรรมจะไม่อัปเดต |
relevance-score | int | ไม่จำเป็น | ลำดับความสำคัญของกิจกรรมแบบเรียลไทม์บน Dynamic Island ค่าระหว่าง 1 ถึง 100; ค่ายิ่งมาก ความสำคัญของกิจกรรมยิ่งสูง; หากไม่ได้ระบุ จะใช้ค่าลำดับความสำคัญสูงสุดโดยค่าเริ่มต้น |
apns-priority | int | ไม่จำเป็น | 5 หรือ 10 ค่าเริ่มต้นคือ 10; การแจ้งเตือน apns-priority=5 จะไม่ใช้ข้อจำกัดอัตราของ Apple; หากเกินข้อจำกัด จะจำกัดการแจ้งเตือน |
iOS alert JSON Object
คำสำคัญ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
title | string | ไม่จำเป็น | หัวข้อที่แสดงใน Apple Watch |
body | string | ไม่จำเป็น | เนื้อหาที่แสดงใน Apple Watch |
sound | string | ไม่จำเป็น | เสียงแจ้งเตือน |
- ข้อความกิจกรรมแบบเรียลไทม์ของ iOS จะถูกส่งต่อไปยังเซิร์ฟเวอร์ของ Apple ผ่าน Engagelab Push Apple กำหนดให้ข้อมูลอัปเดตแบบไดนามิกของข้อความกิจกรรมแบบเรียลไทม์ (ActivityKit) ต้องไม่เกิน 4096 ไบต์
- เนื่องจากความต้องการการบรรจุใหม่และการพิจารณาความปลอดภัย Engagelab Push กำหนดความยาวรวมของพารามิเตอร์ "live_activity" ใน "iOS": { } และเนื้อหาในวงเล็บต้องไม่เกิน 3584 ไบต์ JPush ใช้การเข้ารหัส UTF-8 ซึ่งตัวอักษรจีนหนึ่งตัวใช้ 3 ไบต์
ตัวอย่างการส่งข้อความกิจกรรมแบบเรียลไทม์
ประเภท attributes-type และ live_activity_id ที่ใช้ในกิจกรรมแบบเรียลไทม์จะถูกรายงานโดย SDK ของนักพัฒนา ก่อนใช้งานกิจกรรมแบบเรียลไทม์ จำเป็นต้องรายงานโทเค็นเริ่มต้นการแจ้งเตือนของอุปกรณ์และโทเค็นอัปเดต ดูกระบวนการโดยละเอียดที่ คู่มือกิจกรรมแบบเรียลไทม์ของ Apple
การสร้าง
{ "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" }
โค้ดนี้โชว์เป็นหน้าต่างลอยการอัปเดต
{ "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" }
โค้ดนี้โชว์เป็นหน้าต่างลอย
Voip
ฟังก์ชัน VOIP ของ iOS ประเภทนี้ไม่รองรับการอยู่ร่วมกับประเภทข้อความ iOS อื่น ๆ โครงสร้างพารามิเตอร์คำขออ้างอิง:
{
"from": "push",
"to": {
"registration_id": [ "1a0018970a91da03de5" ]
},
"request_id": "12345",
"custom_args": "12345",
"body": {
"platform": "ios",
"voip": {
"key": "value // คีย์-ค่าแบบกำหนดเองใด ๆ ที่จะส่งต่อไปยังแอปพลิเคชัน"
}
}
}
ตัวเลือก
ตัวเลือกการแจ้งเตือนแบบพุชปัจจุบันประกอบด้วยเนื้อหาดังต่อไปนี้:
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
time_to_live | Int หรือ String | ไม่จำเป็น | เวลาการเก็บข้อความออฟไลน์ (วินาที) | หากผู้ใช้ไม่ได้ออนไลน์ในขณะพุช ข้อความจะถูกเก็บไว้ในระยะเวลาที่กำหนด และจะพุชอีกครั้งเมื่อผู้ใช้ออนไลน์ ค่าเริ่มต้นคือ 86400 (1 วัน) ค่าสูงสุดคือ 15 วัน หากค่าที่ตั้งไว้เกินค่าที่ผู้ให้บริการรองรับ จะใช้ค่าค่าสูงสุดของผู้ให้บริการ การตั้งค่าเป็น 0 หมายถึงไม่เก็บข้อความออฟไลน์; เฉพาะผู้ใช้ออนไลน์เท่านั้นที่จะได้รับข้อความ |
override_msg_id | Long | ไม่จำเป็น | ID ข้อความที่ครอบคลุม | หากการพุชปัจจุบันใช้เพื่อครอบคลุมการพุชก่อนหน้า ให้ป้อน msg_id ของการพุชก่อนหน้าเพื่อให้เกิดผลครอบคลุม ในกรณีนี้ แม้ว่าผู้ใช้ Android จะได้รับข้อความแล้ว และการแจ้งเตือนไม่ได้ถูกลบออกจากแถบการแจ้งเตือน msg_id จะได้รับเนื้อหาอัปเดตแบบออฟไลน์ เนื้อหาใหม่จะครอบคลุมการแจ้งเตือนก่อนหน้า ฟังก์ชันครอบคลุมมีอายุการใช้งาน 1 วัน หาก msg_id ไม่มีอยู่ในระยะเวลาที่กำหนด จะส่งคืนข้อผิดพลาด 7006 ซึ่งหมายถึงการดำเนินการครอบคลุมข้อความที่ไม่ถูกต้อง และข้อความปัจจุบันจะไม่ถูกพุช ฟิลด์นี้ใช้ได้เฉพาะกับ Android และรองรับเฉพาะช่องทาง Engagelab, Xiaomi, Meizu, OPPO, FCM และ Huawei (อุปกรณ์ EMUI10 ขึ้นไป) |
apns_production | Boolean | ไม่จำเป็น | สภาพแวดล้อมการผลิต APNs | ฟิลด์นี้ใช้ได้เฉพาะกับการแจ้งเตือน iOS |
apns_collapse_id | String | ไม่จำเป็น | ตัวระบุสำหรับการอัปเดตการแจ้งเตือน iOS | หากการแจ้งเตือน APNs ใหม่มี apns-collapse-id เดียวกันกับการแจ้งเตือนที่มีอยู่ในศูนย์การแจ้งเตือน เนื้อหาใหม่จะอัปเดตการแจ้งเตือนนั้นและวางไว้ที่ด้านบนของศูนย์การแจ้งเตือน ความยาวของ collapse id ต้องไม่เกิน 64 ไบต์ |
big_push_duration | Int | ไม่จำเป็น | ระยะเวลาการพุชแบบช้า (นาที) | เรียกอีกชื่อว่าการพุชแบบช้า จะลดความเร็วการพุชที่รวดเร็วเดิมลง และกระจายการพุชไปยังผู้ใช้เป้าหมายอย่างสม่ำเสมอในช่วงเวลาที่กำหนด n นาที; ค่าสูงสุดคือ 1440 |
multi_language | json Object | ไม่จำเป็น | การตั้งค่าการพุชหลายภาษา | การตั้งค่าการปรับเนื้อหาการพุชหลายภาษา ดูรายละเอียดเพิ่มเติมที่ multi_language |
third_party_channel | JSON Object | ไม่จำเป็น | ข้อมูลการกำหนดค่าช่องทางผู้ผลิต Android | ใช้ได้เฉพาะกับผู้ใช้ที่กำหนดค่าช่องทางผู้ผลิต ดูรายละเอียดเพิ่มเติมที่ third_party_channel |
classification | Int | ไม่จำเป็น | การตั้งค่าประเภทข้อความพุช | EngageLab ไม่ได้ตัดสินหรือปรับเทียบประเภทข้อความที่ระบุ หากไม่ได้ระบุ จะเป็น 0 โดยค่าเริ่มต้น 0: แทนข้อความการดำเนินงาน 1: แทนข้อความระบบ |
voice_value | String | ไม่จำเป็น | ค่าของไฟล์เสียง | พารามิเตอร์หลายตัวคั่นด้วยเครื่องหมายจุลภาค '#' หมายถึงต้องแยกวิเคราะห์; มิฉะนั้นจะจับคู่ไฟล์ภาษาโดยตรง ค่าเสียงที่ระบุในเนื้อหาการพุชจะไม่ถูกแปลงเป็นการออกเสียงหากไม่ตรงกับกฎภาษา |
enhanc_message | Bool | ไม่จำเป็น | เปิดใช้งานการแสดงข้อความในแอปพลิเคชัน | true - เปิดใช้งานการเพิ่มประสิทธิภาพ; false - ปิดใช้งานการเพิ่มประสิทธิภาพ หากการอนุญาตการแจ้งเตือนถูกปิดใช้งาน การเปิดใช้งานฟังก์ชันนี้จะแสดงเนื้อหาข้อความในแถบการแจ้งเตือนในรูปแบบข้อความในแอปพลิเคชันเมื่อผู้ใช้เรียกใช้แอปพลิเคชัน ค่าเริ่มต้นของฟังก์ชันนี้คือ false และจะมีผลเฉพาะเมื่อเปิดใช้งานอย่างชัดเจน |
plan_id | String | ไม่จำเป็น | ตัวระบุแผนการพุช | ต้องสร้างตัวระบุแผนก่อน สามารถสร้างได้ในคอนโซลหรือผ่าน API |
cid | String | ไม่จำเป็น | ตัวระบุคำขอพุชเพื่อป้องกันการพุชซ้ำ | อนุญาตเฉพาะตัวอักษร ตัวเลข ขีดล่าง และขีดกลาง ความยาวไม่เกิน 64 ตัวอักษร ฟิลด์นี้ต้องไม่ซ้ำกันภายใต้ AppKey เดียวกัน วิธีหลีกเลี่ยงการพุชซ้ำ |
Multi_language
ฟิลด์นี้ใช้สำหรับฟังก์ชันการพุชหลายภาษาของบริการ EngageLab Push อนุญาตให้คุณส่งเนื้อหาการแจ้งเตือนที่กำหนดเองไปยังผู้ใช้ที่พูดภาษาต่างกัน โดยการระบุหลายภาษาและเนื้อหาข้อความ หัวข้อ และคำบรรยาย iOS ที่สอดคล้องกันในคำขอพุช คุณสามารถส่งการแจ้งเตือนที่เหมาะสมตามการตั้งค่าภาษาของผู้ใช้
พารามิเตอร์คำขอ
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
en | string | ไม่จำเป็น | คีย์ภาษา | สอดคล้องกับภาษาของผู้ใช้ ดูคีย์โค้ดในภาคผนวก |
content | string | ไม่จำเป็น | เนื้อหาข้อความ | แทนที่ข้อมูลใน notification.android.alert, notification.ios.alert, notification.web.alert และ message.msg_content ตามภาษาของผู้ใช้ |
title | string | ไม่จำเป็น | หัวข้อข้อความ | แทนที่ข้อมูลใน notification.android.title, notification.ios.alert, notification.web.title และ message.title ตามภาษาของผู้ใช้ |
ios_subtitle | string | ไม่จำเป็น | คำบรรยาย iOS | แทนที่ข้อมูลใน notification.ios.alert ตามภาษาของผู้ใช้ |
ตัวอย่างคำขอ
HTTP วิธีการขอ: POST
URL คำขอ: /v4/grouppush หรือ /v4/push
รูปแบบข้อมูลคำขอ: JSON
ตัวอย่างคำขอ:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
"ios_subtitle": ""
}
}
}
}
ตัวอย่างคำขอ
การตอบสนองสำเร็จ:
{
}
การตอบสนองล้มเหลว:
{
"code": 400,
"data": "",
"message": "ข้อความผิดพลาด"
}
Third_party_channel
ฟิลด์นี้ใช้สำหรับกรอกข้อมูลเฉพาะของช่องทางผู้ผลิต Android key รองรับเฉพาะช่องทางผู้ผลิต Android 7 ช่องทาง ได้แก่ xiaomi, huawei, meizu, oppo, vivo, fcm, honor สามารถมีอยู่ได้หนึ่งหรือหลายช่องทางพร้อมกัน แต่ละประเภท key ของผู้ผลิตสามารถมีตัวเลือกดังนี้:
พารามิเตอร์คำขอ
คำสำคัญ | ประเภท | ตัวเลือก | ความหมาย | คำอธิบาย |
---|---|---|---|---|
distribution_new | String | ตัวเลือกที่จำเป็น | _ | เมื่อ Engagelab และช่องทางผู้ผลิตอยู่ร่วมกัน ให้ตั้งค่าลำดับความสำคัญของการส่งข้อมูลลง |
channel_id | String | ตัวเลือก | การจัดประเภทข้อความในแถบแจ้งเตือน | channel_id ยังสามารถใช้ได้บน Android หากกรอกฟิลด์นี้ จะถูกใช้เป็นลำดับแรก มิฉะนั้นจะใช้การกำหนดของ android.channel_idcategory และ notify_level ด้านล่าง |
classification | Int | ตัวเลือก | การจัดประเภทข้อความในแถบแจ้งเตือน | การจัดประเภทข้อความในแถบแจ้งเตือนของผู้ผลิต Vivo หากไม่ได้กรอกค่าเริ่มต้นคือ 0 |
pushMode | Int | ตัวเลือก | โหมดการส่งข้อมูลของ Vivo | ค่าเริ่มต้นคือ 0 ดูรายละเอียดเพิ่มเติมได้ที่ vivo pushMode การใช้การส่งข้อมูลทดสอบ จำเป็นต้องกำหนดค่า ID ของอุปกรณ์ทดสอบในแบ็คเอนด์ Vivo ด้วยตนเอง |
importance | String | ตัวเลือก | การจัดประเภทข้อความอัจฉริยะในแถบแจ้งเตือนของ Huawei/荣耀 | เพื่อปรับให้เข้ากับการจัดประเภทข้อความอัจฉริยะในแถบแจ้งเตือนของ Huawei สอดคล้องกับฟิลด์ importance ของ Huawei หากไม่ได้กรอกค่าเริ่มต้นคือ “NORMAL” อ้างอิงจาก: การจัดประเภทข้อความอัจฉริยะของ Huawei |
urgency | String | ตัวเลือก | ลำดับความสำคัญของข้อความที่กำหนดเองของผู้ผลิต Huawei | เพื่อปรับให้เข้ากับลำดับความสำคัญของข้อความที่กำหนดเองของผู้ผลิต Huawei |
category | String | ตัวเลือก | ตัวระบุฉากข้อความที่กำหนดเองของผู้ผลิต Huawei | เพื่อปรับให้เข้ากับข้อกำหนดการแจ้งเตือนของอุปกรณ์ Huawei, Vivo, OPPO ฟิลด์นี้ใช้สำหรับระบุประเภทข้อความ “การแจ้งเตือนบนคลาวด์” เพื่อกำหนดวิธีการแจ้งเตือนและเร่งการส่งข้อความประเภทเฉพาะ |
notify_level | Int | ตัวเลือก | ระดับการแจ้งเตือนในแถบแจ้งเตือนของ OPPO | 1 สำหรับแถบแจ้งเตือน, 2 สำหรับแถบแจ้งเตือน+หน้าจอล็อก, 16 สำหรับแถบแจ้งเตือน+หน้าจอล็อก+แบนเนอร์+การสั่น+เสียง notify_level ใช้ได้เฉพาะกับข้อความ “บริการและการสื่อสาร” notify_level จำเป็นต้องมีพารามิเตอร์ category รวมอยู่ด้วย |
small_icon_uri | String | ตัวเลือก | รูปแบบไอคอนเล็กของข้อความผู้ผลิต | |
small_icon_color | String | ตัวเลือก | สีของรูปแบบไอคอนเล็กของผู้ผลิต Xiaomi | เพื่อปรับให้เข้ากับสีของรูปแบบไอคอนเล็กของข้อความผู้ผลิต Xiaomi หากไม่ได้กรอกค่าเริ่มต้นคือสีเทา (Xiaomi ไม่สนับสนุนไอคอนเล็กที่กำหนดเองอีกต่อไป ขอแนะนำให้นักพัฒนาไม่ใช้ฟังก์ชันที่เกี่ยวข้องกับไอคอนเล็กของ Xiaomi ต่อไป) |
big_text | String | ตัวเลือก | รูปแบบข้อความใหญ่ของข้อความผู้ผลิต | |
only_use_vendor_style | Boolean | ตัวเลือก | ใช้เฉพาะรูปแบบที่ตั้งค่าโดยช่องทางของผู้ผลิต | ใช้เฉพาะรูปแบบที่ตั้งค่าโดยช่องทางของผู้ผลิต ไม่ใช้รูปแบบที่ตั้งค่าใน Android ค่าเริ่มต้นคือ false |
เพื่อให้สอดคล้องกับกลยุทธ์ช่องทางผู้ผลิตหลายรายและลดความซับซ้อนของการกำหนดค่า ฟิลด์
distribution_new
ได้รับการปรับเปลี่ยนวิธีการกำหนดค่าดังนี้ การกำหนดค่าระดับผู้ผลิตในอดีตของคุณยังคงใช้ได้ แต่แนะนำให้ย้ายไปยังการกำหนดค่าระดับโลกเพื่อหลีกเลี่ยงความเสี่ยงด้านความเข้ากันได้ในอนาคต (กฎใหม่จะมีผลบังคับใช้ตั้งแต่วันที่ 3 เมษายน 2025):
- ลำดับความสำคัญของการกำหนดค่า (กฎใหม่)
- ลำดับความสำคัญที่หนึ่ง: การกำหนดค่าระดับโลก
third_party_channel.distribution_new
(วิธีใหม่ที่แนะนำ)
ตัวอย่าง:"distribution_new": "pns_mtpush"
- ลำดับความสำคัญที่สอง: การกำหนดค่าระดับผู้ผลิต
third_party_channel.{vendor_key}.distribution_new
(วิธีการที่เข้ากันได้ในอดีต)
มีผลเฉพาะเมื่อไม่ได้ตั้งค่าระดับโลก - ไม่ได้กำหนดค่า: กลยุทธ์เริ่มต้น: pns_mtpush
- ลำดับความสำคัญที่หนึ่ง: การกำหนดค่าระดับโลก
หมายเหตุเกี่ยวกับความเข้ากันได้
- การรับประกันความเข้ากันได้: การกำหนดค่าระดับผู้ผลิตในอดีตยังคงมีผลเมื่อไม่ได้ตั้งค่าฟิลด์ระดับโลก เพื่อให้มั่นใจว่าไม่มีผลกระทบต่อบริการปัจจุบัน
- การจัดการความขัดแย้ง: หากมีการกำหนดค่าทั้งระดับโลกและระดับผู้ผลิต จะอ่านค่าเฉพาะระดับโลก การกำหนดค่าระดับผู้ผลิตจะถูกละเว้น
- แผนระยะยาว: การกำหนดค่าระดับผู้ผลิต
distribution_new
อาจถูกยกเลิกในเวอร์ชันอนาคต ขอแนะนำให้ปรับเปลี่ยนให้เร็วที่สุด
ตัวอย่างคำขอ
{
"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": "*******",
"large_icon": "3653918_5f92b5739ae676f5745bcbf4"
},
"vivo": {
"pushMode": 0
}
}
}
Request_id
รหัสคำขอ เป็นฟิลด์ที่ลูกค้ากำหนดเองซึ่งเป็นตัวเลือก ใช้เพื่อระบุคำขอที่กำลังดำเนินการในฝั่งไคลเอนต์ และส่งกลับในคำตอบ
ตัวอย่างคำขอ
{
"request_id":"12345678"
}
#### Return Example
```json
{
"msg_id": "1225764",
"request_id": "12345678"
}
ตัวอย่างการส่งคืน
{
"msg_id": "1225764",
"request_id": "12345678"
}
Custom_args
ฟิลด์ที่กำหนดเองโดยลูกค้า เป็นฟิลด์ที่ไม่จำเป็น ไม่ได้ส่งคืนในการตอบกลับ และจะถูกส่งคืนใน callback
ตัวอย่างคำขอ
{
"custom_args":{
"args1": "args1"
}
}
พารามิเตอร์การส่งคืน
การส่งคืนที่สำเร็จ
ฟิลด์ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
request_id | String | Optional | ID ที่กำหนดเองที่ส่งในคำขอจะถูกส่งคืนตามเดิมในการตอบกลับ |
message_id | String | Required | ID ข้อความ ซึ่งระบุข้อความโดยเฉพาะเจาะจง |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id":"18","msg_id":"1828256757"}
การส่งคืนที่ล้มเหลว
รหัสสถานะ HTTP เป็น 4xx หรือ 5xx และเนื้อหาการตอบกลับประกอบด้วยฟิลด์ดังต่อไปนี้:
ฟิลด์ | ประเภท | ตัวเลือก | คำอธิบาย |
---|---|---|---|
code | int | Required | รหัสข้อผิดพลาด ดู [รหัสข้อผิดพลาด](#Error code) คำอธิบาย |
message | String | Required | รายละเอียดข้อผิดพลาด |
{
"error":{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
}
การส่งคืนการเรียก
รหัสสถานะ HTTP
เอกสารอ้างอิง:HTTP-Status-Code
รหัสข้อผิดพลาด
รหัส | คำอธิบาย | คำอธิบายโดยละเอียด | รหัสสถานะ HTTP |
---|---|---|---|
20101 | พารามิเตอร์การส่งพุชไม่ถูกต้อง | Registration ID ไม่ถูกต้องหรือไม่เป็นของ appkey ปัจจุบัน | 400 |
21001 | รองรับเฉพาะวิธี HTTP Post | ไม่รองรับวิธี Get | 405 |
21002 | พารามิเตอร์ที่จำเป็นหายไป | ต้องแก้ไข | 400 |
21003 | ค่าพารามิเตอร์ไม่ถูกต้อง | ต้องแก้ไข | 400 |
21004 | การตรวจสอบล้มเหลว | ต้องแก้ไข, ดู: การเรียกสำหรับการตรวจสอบ | 401 |
21005 | เนื้อหาข้อความใหญ่เกินไป | ต้องแก้ไข, ข้อจำกัดความยาว Notification+Message คือ 2048 ไบต์ | 400 |
21008 | พารามิเตอร์ app_key ไม่ถูกต้อง | ต้องแก้ไข, เปรียบเทียบ appkey ที่ส่งกับข้อมูลแอปพลิเคชันอย่างระมัดระวัง, ตรวจสอบช่องว่างเพิ่มเติม | 400 |
21009 | ข้อผิดพลาดระบบภายใน | โปรดติดต่อทีมสนับสนุน | 400 |
21011 | ไม่พบเป้าหมายการส่งพุชที่เหมาะสม | ตรวจสอบฟิลด์ 'to' | 400 |
21015 | การตรวจสอบพารามิเตอร์คำขอล้มเหลว | มีพารามิเตอร์ที่ไม่คาดคิด | 400 |
21016 | การตรวจสอบพารามิเตอร์คำขอล้มเหลว | ประเภทพารามิเตอร์ผิด หรือความยาวพารามิเตอร์เกินขีดจำกัด | 400 |
21030 | การหมดเวลาบริการภายใน | ลองใหม่ภายหลัง | 503 |
21050 | พารามิเตอร์เหตุการณ์ live_activity ไม่ถูกต้อง | พารามิเตอร์เหตุการณ์ต้องเป็น "start", "update", หรือ "end" | 400 |
21051 | พารามิเตอร์ผู้ชม live_activity ไม่ถูกต้อง | ในระหว่างการสร้าง live activity, เป้าหมายการส่งพุชสามารถเป็นได้เฉพาะการออกอากาศหรือการลงทะเบียน | 400 |
21052 | พารามิเตอร์ attributes-type ของ live_activity ไม่ถูกต้อง | เมื่อ event=start, attributes-type ไม่สามารถว่างเปล่า | 400 |
21053 | พารามิเตอร์ content-state ของ live_activity ไม่ถูกต้อง | Content-state ไม่สามารถว่างเปล่า | 400 |
21054 | ข้อผิดพลาดพารามิเตอร์ live_activity, การแจ้งเตือนและข้อความที่กำหนดเองไม่สามารถอยู่ร่วมกันได้ | voip, message, notification, live_activity ไม่สามารถอยู่ร่วมกันได้ | 400 |
21055 | live_activity ios non-p8 certificate | Live activity รองรับเฉพาะใบรับรอง p8 | 400 |
21056 | live_activity รองรับเฉพาะแพลตฟอร์ม ios | พารามิเตอร์ platform ต้องเป็น ios | 400 |
21057 | ข้อความ voip ไม่สามารถอยู่ร่วมกับประเภทข้อความอื่นได้ | voip, message, notification, live_activity ไม่สามารถอยู่ร่วมกันได้ | 400 |
21058 | voip รองรับเฉพาะแพลตฟอร์ม ios | พารามิเตอร์ platform ต้องเป็น ios | 400 |
23006 | ข้อผิดพลาดพารามิเตอร์ | Fixed-rate push big_push_duration เกินค่าขั้นสูงสุด 1440 | 400 |
23008 | อินเทอร์เฟซถูกจำกัดอัตรา | การส่งพุชอินเทอร์เฟซแอปพลิเคชันเดียวถึงขีดจำกัด (500 qps) | 400 |
23009 | ข้อผิดพลาดสิทธิ์การส่งพุช | ที่อยู่ IP การส่งพุชปัจจุบันไม่อยู่ในรายการที่อยู่ IP ของแอปพลิเคชัน | 400 |
27000 | ข้อผิดพลาดหน่วยความจำภายใน | โปรดลองใหม่ | 500 |
27001 | ข้อผิดพลาดพารามิเตอร์ | ข้อมูลการตรวจสอบว่างเปล่า | 401 |
27008 | ข้อผิดพลาดพารามิเตอร์ | การกระจายภายใน third_party_channel ไม่ว่างเปล่า แต่เนื้อหาการแจ้งเตือนของ notification ว่างเปล่า | 401 |
27009 | ข้อผิดพลาดพารามิเตอร์ | รูปแบบการกระจายใน third_party_channel ไม่ถูกต้องหรือว่างเปล่า | 401 |
21038 | ข้อผิดพลาดสิทธิ์การส่งพุช | VIP หมดอายุหรือไม่ได้เปิดใช้งาน | 401 |
21306 | ข้อผิดพลาดพารามิเตอร์ | ไม่สามารถส่งข้อความการแจ้งเตือนและข้อความที่กำหนดเองพร้อมกันได้ | 401 |
21059 | ข้อผิดพลาดพารามิเตอร์ | ประเภทข้อความนี้ไม่รองรับ big_push_duration | 401 |
ขีดจำกัดการส่งพุช
ช่องทางผู้ผลิต | ความยาวหัวเรื่อง | ความยาวเนื้อหา | คำที่อ่อนไหว | หมายเหตุอื่น ๆ |
---|---|---|---|---|
ช่องทาง Engagelab | < 50 ตัวอักษร | ไม่มีขีดจำกัด แต่จำกัดขนาดรวมของเนื้อหาข้อความที่ 4000 ไบต์ | - | ความยาว Notification ใน MTPush ถูกจำกัดที่ 4000 ไบต์. |
ช่องทาง Huawei | < 40 ตัวอักษร | < 1024 ตัวอักษร | ห้ามเนื้อหาที่เกี่ยวข้องกับรัฐบาล, ผู้นำ, การแยกตัวของไต้หวัน, ฯลฯ | สิทธิ์ [การแจ้งเตือนการตลาด] เริ่มต้นคือ การแจ้งเตือนแบบเงียบ; การส่งแบบเงียบไม่มีเสียง, การสั่น, หรือการแจ้งเตือนอื่น ๆ. |
ช่องทาง Glory | ไม่มีขีดจำกัด แต่ขนาดรวมของเนื้อหาข้อความ < 4096 ไบต์ | ไม่มีขีดจำกัด แต่ขนาดรวมของเนื้อหาข้อความ < 4096 ไบต์ | ห้ามเนื้อหาที่เกี่ยวข้องกับรัฐบาล, ผู้นำ, การแยกตัวของไต้หวัน, ฯลฯ | - |
ช่องทาง Phantom | < 32 ตัวอักษร | < 100 ตัวอักษร | ห้ามอักขระพิเศษ เช่น "#" | ข้อความอาจถูกเก็บไว้ใน [Meizu Message Box] ที่มุมขวาบนของโทรศัพท์ Meizu. ตัวอักษรจีนและอังกฤษนับเป็น 1 ตัวอักษร. |
ช่องทาง Xiaomi | < 50 ตัวอักษร | < 128 ตัวอักษร | ห้ามอักขระพิเศษ เช่น "#", ">>" | ข้อความอาจปรากฏในการแจ้งเตือนที่ไม่สำคัญในแถบการแจ้งเตือน. ตัวอักษรจีนและอังกฤษนับเป็น 1 ตัวอักษร. |
ช่องทาง OPPO | < 32 ตัวอักษร | < 200 ตัวอักษร | ยังไม่มีคำอธิบาย | สิทธิ์การแจ้งเตือนถูกปิดใช้งานโดยค่าเริ่มต้น. ตัวอักษรจีนและอังกฤษนับเป็น 1 ตัวอักษร. |
ช่องทาง vivo | < 40 ตัวอักษร | < 100 ตัวอักษร | ห้ามอักขระพิเศษและข้อความที่เป็นทางการ เช่น ตัวเลขธรรมดา, ภาษาอังกฤษธรรมดา, ฯลฯ | ตัวอักษรภาษาอังกฤษนับเป็น 1, จีนเป็น 2. สิทธิ์การแจ้งเตือนถูกปิดใช้งานโดยค่าเริ่มต้น. จำนวนข้อความปฏิบัติการจากอุปกรณ์เดียวกันถูกจำกัดที่ 5 ต่อวัน. ข้อความปฏิบัติการที่เหมือนกันไม่สามารถส่งจากอุปกรณ์เดียวกันในวันเดียวกันได้. |
ช่องทาง APNS | < 20 ตัวอักษร (40 ตัวอักษรภาษาอังกฤษ) | ศูนย์การแจ้งเตือนและหน้าจอล็อคแสดงสูงสุด 110 ตัวอักษร (55 ตัวอักษรจีน). ป๊อปอัพด้านบนแสดงสูงสุด 62 ตัวอักษร (31 ตัวอักษรจีน), พร้อมจุดไข่ปลาในข้อความที่ยาวกว่า. | ยังไม่มีคำอธิบาย | ยังไม่มีคำอธิบาย |
รหัสภาษาหลายภาษา
ภาษา | รหัสภาษา |
---|---|
อังกฤษ | en |
อาหรับ | ar |
จีน (ตัวย่อ) | zh-Hans |
จีน (ตัวเต็ม) | zh-Hant |
เช็ก | cs |
เดนมาร์ก | da |
ดัตช์ | nl |
ฝรั่งเศส | fr |
เยอรมัน | de |
ฮินดี | hi |
อิตาลี | it |
ญี่ปุ่น | ja |
เกาหลี | ko |
มาเลย์ | ms |
รัสเซีย | ru |
สเปน | es |
ไทย | th |
เวียดนาม | vi |
อินโดนีเซีย | id |
นอร์เวย์ | no |
สวีเดน | sv |
โปแลนด์ | pl |
ตุรกี | tr |
ฮิบรู | he |
โปรตุเกส | pt |
โรมาเนีย | ro |
ฮังการี | hu |
ฟินแลนด์ | fi |
กรีก | el |