วิธีการแสดงข้อความโดยไม่ถูกพับ

ในกรณีการส่งการแจ้งเตือนผ่านแอปพลิเคชันมือถือ ปัญหาการพับข้อความมีผลกระทบโดยตรงต่อประสบการณ์ผู้ใช้และประสิทธิภาพการส่งข้อความ บทความนี้จะอธิบายวิธีการแสดงข้อความโดยไม่ถูกพับโดยใช้ทั้งประเภทข้อความการแจ้งเตือนและข้อความที่กำหนดเอง โดยอ้างอิงจากบริการ AppPush

alt text

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" // ค่าเฉพาะที่ป้องกันการพับ } } }
              
              {
  "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" // สไตล์การแสดงผลที่กำหนดเอง } } }
              
              {
  "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); // เรียกใช้เพื่อแสดงข้อความ } }
              
              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); }
              
              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

โดยการเลือกกลยุทธ์ที่เหมาะสม คุณสามารถปรับปรุงการมองเห็นของข้อความและการมีส่วนร่วมของผู้ใช้ได้อย่างมาก

icon
ติดต่อฝ่ายขาย