วิธีการแสดงข้อความโดยไม่ถูกพับ
ในกรณีการส่งการแจ้งเตือนผ่านแอปพลิเคชันมือถือ ปัญหาการพับข้อความมีผลกระทบโดยตรงต่อประสบการณ์ผู้ใช้และประสิทธิภาพการส่งข้อความ บทความนี้จะอธิบายวิธีการแสดงข้อความโดยไม่ถูกพับโดยใช้ทั้งประเภทข้อความการแจ้งเตือนและข้อความที่กำหนดเอง โดยอ้างอิงจากบริการ AppPush
1. การเปรียบเทียบประเภทข้อความและกฎการแสดงผล
ข้อความการแจ้งเตือน (Notification Messages)
- พฤติกรรมเริ่มต้นของระบบ:
สถานะของแอป | กฎการแสดงผล |
---|---|
อยู่ในเบื้องหน้า (Foreground) | สามารถควบคุมการพับได้โดยใช้ group_id |
อยู่ในเบื้องหลัง (Background) | การจัดการโดยระบบโทรศัพท์ จะแสดงในแถบการแจ้งเตือนพร้อมตัวเลือกการปรับแต่งที่จำกัด (เช่น การพับ, ขีดจำกัดจำนวน) |
- กรณีใช้งาน: ข้อความการแจ้งเตือนมาตรฐานที่ต้องการส่งไปยังผู้ใช้ผ่านแถบการแจ้งเตือนของระบบ
ข้อความที่กำหนดเอง (Custom Messages)
ข้อได้เปรียบหลัก: ไม่ว่าจะแอปอยู่ในสถานะเบื้องหน้า, เบื้องหลัง หรือถูกลบออกจากหน่วยความจำโค้ดในฝั่งลูกค้าสามารถควบคุมวิธีการแสดงข้อความได้อย่างเต็มที่ (เช่น ตำแหน่งของป็อปอัพ, การพับข้อความ)
กรณีใช้งาน: ข้อความที่มีความสำคัญสูงที่ต้องการการโต้ตอบที่ปรับแต่งได้ (เช่น การอัปเดตสถานะการสั่งซื้อ, การส่งข้อความทันที)
2. สองวิธีการป้องกันการพับข้อความ
วิธีที่ 1: ใช้ข้อความการแจ้งเตือน (Notification Messages)
(FCM ต้องการให้แอปอยู่ในเบื้องหน้า; EngageLab ทำงานได้ไม่ว่าจะแอปอยู่ในสถานะใด)
หลักการ
ใช้ฟิลด์ group_id
เพื่อควบคุมการรวมกลุ่มของข้อความ:
- เพื่อป้องกันการพับ: กำหนด
group_id
ที่ไม่ซ้ำกันให้กับแต่ละข้อความ
ขั้นตอนการดำเนินการ
รองรับตั้งแต่ Android SDK เวอร์ชัน V5.0.1 ขึ้นไป
ตัวอย่างข้อมูล Payload ของ Push API:
{
"notification": {
"android": {
"group_id": "UNIQUE_GROUP_123" // ค่าเฉพาะที่ป้องกันการพับ
}
}
}
หมายเหตุความเข้ากันได้
- รองรับเฉพาะ FCM และ EngageLab ช่องทางการส่งข้อความ
- ข้อความอาจได้รับผลกระทบจากข้อจำกัดของระบบเมื่อแอปอยู่ในสถานะเบื้องหลัง
วิธีที่ 2: ใช้ข้อความที่กำหนดเอง (Custom Messages) (รองรับทุกสถานการณ์)
หลักการ
ลูกค้าจะเรียกใช้ API showNotification
เพื่อแสดงข้อความและข้ามข้อจำกัดของระบบ
ขั้นตอนการดำเนินการ
1. ส่งข้อความที่กำหนดเอง
{
"message": {
"msg_content": "คำสั่งซื้อของคุณได้ถูกจัดส่งแล้ว",
"content_type": "text",
"extras": {
"type": "priority_alert",
"style": "popup_bottom" // สไตล์การแสดงผลที่กำหนดเอง
}
}
}
2. การจัดการข้อความที่ลูกค้าดำเนินการ (ตัวอย่าง Android)
public class UserReceiver extends MTCommonReceiver {
@Override
public void onCustomMessage(Context context, CustomMessage customMessage) {
ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
showNotification(context, customMessage); // เรียกใช้เพื่อแสดงข้อความ
}
}
3. ลอจิกการแสดงข้อความที่กำหนดเอง (ป้องกันการพับ)
public void showNotification(Context context, CustomMessage customMessage) {
NotificationMessage notificationMessage = new NotificationMessage()
.setMessageId(customMessage.getMessageId())
.setNotificationId("ID ของคุณเอง; การแจ้งเตือนแต่ละรายการควรมี ID ที่ไม่ซ้ำ")
.setTitle(customMessage.getTitle())
.setContent(customMessage.getContent())
.setgroup_id(customMessage.getMessageId()); // ฟิลด์สำคัญในการป้องกันการพับ
MTPushPrivatesApi.showNotification(context, notificationMessage);
}
การเปรียบเทียบความสามารถ
ความสามารถ | ข้อความการแจ้งเตือน (Notification Message) | ข้อความที่กำหนดเอง (Custom Message) |
---|---|---|
รองรับสถานะแอป | FCM: เฉพาะเบื้องหน้า; EngageLab: ทุกสถานะ | รองรับทุกสถานการณ์ (เบื้องหน้า/เบื้องหลัง) |
ความยืดหยุ่นของ UI | จำกัด (ขึ้นอยู่กับระบบ) | ปรับแต่งได้เต็มที่ |
ข้อจำกัดของช่องทาง | ต้องใช้ช่องทางเฉพาะ (FCM, EngageLab) | ไม่มีข้อจำกัด |
3. หมายเหตุ
ความเข้ากันได้ของช่องทาง
- ฟังก์ชัน
group_id
รองรับเฉพาะช่องทาง FCM และ EngageLab เท่านั้น
- ฟังก์ชัน
การปรับแต่งประสิทธิภาพ
- เมื่อส่งข้อความที่มีความถี่สูงโดยใช้
group_id
ที่ไม่ซ้ำกัน ควรตรวจสอบแรงกดดันในแถบการแจ้งเตือน (แนะนำให้จำกัดที่ ≤30 ข้อความต่ออุปกรณ์ต่อชั่วโมง)
- เมื่อส่งข้อความที่มีความถี่สูงโดยใช้
4. สรุป
- ความต้องการที่ไม่ซับซ้อน: ควรใช้
group_id
เพื่อควบคุมการพับในข้อความการแจ้งเตือน — มีต้นทุนการพัฒนาต่ำ - ความต้องการที่สามารถปรับแต่งได้สูง: เลือกข้อความที่กำหนดเอง — ช่วยให้ควบคุมพฤติกรรมการแสดงผลได้เต็มที่ผ่านลอจิกของลูกค้า
- กลยุทธ์แบบผสม: ใช้ข้อความที่กำหนดเองสำหรับข้อความสำคัญ (เช่น การชำระเงินสำเร็จ) และจัดการข้อความมาตรฐานผ่าน
group_id
โดยการเลือกกลยุทธ์ที่เหมาะสม คุณสามารถปรับปรุงการมองเห็นของข้อความและการมีส่วนร่วมของผู้ใช้ได้อย่างมาก