คู่มือฉบับสมบูรณ์เกี่ยวกับ Notification Badge: ฟีเจอร์สำคัญเพื่อเพิ่ม Engagement ของแอป

ภาพรวมของค่า Badge

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

EngageLab ให้บริการโซลูชัน Badge ข้ามแพลตฟอร์มแบบครบวงจร เพื่อช่วยให้นักพัฒนาสร้างประสบการณ์ผู้ใช้ที่ดีที่สุด


ภาพรวมการรองรับของแต่ละ Channel

เนื่องจากข้อจำกัดของระบบในแต่ละผู้ผลิตมือถือ ช่องทาง push notification บางรายเท่านั้นที่รองรับการแสดง Badge สถานะการรองรับมีดังนี้:

Vendor รองรับ Badge / ตัวเลข Badge หมายเหตุการใช้งาน ข้อจำกัดของ Badge
Google FCM รองรับ Badge แสดงเป็นจุด (dot) ตามค่าเริ่มต้น ตามพฤติกรรมของระบบ ไม่มีการกำหนดขีดจำกัดสูงสุดที่ชัดเจน
Huawei / Honor รองรับ Badge แบบตัวเลข ตัวเลข Badge เพิ่มขึ้นเมื่อมีการแจ้งเตือนใหม่ โดยปกติจำกัดที่ 99
Xiaomi รองรับ Badge แบบตัวเลข ทำงานตามตรรกะของระบบ แต่ละการแจ้งเตือนใหม่จะเพิ่มขึ้น 1 ขีดจำกัดขึ้นกับระบบ ไม่มีระบุไว้อย่างชัดเจน
OPPO รองรับการตั้งค่าแบดจ์ตัวเลขบนเดสก์ท็อปผ่านช่องทางผู้ผลิต เปิดความสามารถแบดจ์ตัวเลขบนเดสก์ท็อปใน OPPO Open Platform และตั้งค่าด้วย badge_operation_type กับ badge_message_count หากยังไม่เปิดสิทธิ์ คำขออาจสำเร็จแต่แบดจ์อาจไม่แสดงผล ขีดจำกัดการแสดงผลสุดท้ายและนโยบายเดสก์ท็อปเป็นไปตาม OPPO
VIVO รองรับการเพิ่มอัตโนมัติผ่านช่องทางผู้ผลิต และการตั้งค่าแบดจ์ด้วย SDK ช่องทางผู้ผลิตใช้ add_badge การแจ้งเตือนในเครื่องและ setNotificationBadge/resetNotificationBadge ของ SDK ก็รองรับเช่นกัน ต้องเปิดสิทธิ์แบดจ์ vivo และเปิดแบดจ์เดสก์ท็อป ขีดจำกัดการแสดงผลสุดท้ายและพฤติกรรมขึ้นกับเวอร์ชันระบบและนโยบายเดสก์ท็อป
Meizu ไม่รองรับ Badge แบบตัวเลข รองรับเฉพาะจุดสีแดง (red dot)
iOS รองรับ Badge แบบตัวเลข สามารถจัดการตัวเลข Badge ผ่าน push payload หรือ SDK API สูงมาก; ไม่มีขีดจำกัดที่ระบุไว้

ตัวอย่างการใช้งานที่พบบ่อย

  • แอปโซเชียล: ซิงโครไนซ์จำนวนข้อความที่ยังไม่ได้อ่านแบบเรียลไทม์
  • แอปอีคอมเมิร์ซ: แจ้งเตือนคำสั่งซื้อหรือรายการที่ต้องดำเนินการ
  • แอปข่าว: แสดงจำนวนบทความที่ยังไม่ได้อ่าน

iOS Badge: การจัดการ Badge อย่างแม่นยำ

สถาปัตยกรรมทางเทคนิค

ภาพประกอบสถาปัตยกรรม Badge iOS


การตั้งค่า Badge ฝั่ง Client

ตั้งค่า Badge (พร้อม Callback)

รองรับตั้งแต่เวอร์ชัน: v5.2.0

+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
              
              + (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ล้างค่า Badge

ใช้สำหรับลบค่า Badge ที่เก็บไว้บนเซิร์ฟเวอร์ MTPush เทียบเท่ากับการเรียก:

setBadge: 0
              
              setBadge: 0

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
+ (void)resetBadge
              
              + (void)resetBadge

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การตั้งค่า Badge ฝั่ง Server

เมื่อส่ง push notification ต้องกำหนด field badge ใน payload ของ ios

Field Type Optional คำอธิบาย หมายเหตุ
badge Int หรือ String Optional ตัวเลข Badge บนไอคอนแอป • สามารถตั้งค่าเป็น N, +N, หรือ -N โดยที่ N อยู่ในช่วง [0, 99]
• หากค่าเป็น 10 Badge อาจถูกตีความเป็น N, 10+N หรือ 10-N (ค่าต่ำกว่า 0 จะล้าง Badge)
• หากกำหนดเป็น 0 หรือค่าว่าง จะล้าง Badge
• หากไม่กำหนด Badge จะคงค่าเดิม
• MTPush API (SDK) กำหนดค่า Badge เริ่มต้นเป็น "+1"

Huawei / Honor Badge

การตั้งค่าฝั่ง Client

<!-- การกำหนด permission ใน AndroidManifest.xml --> <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> <uses-permission android:name="com.hihonor.android.launcher.permission.CHANGE_BADGE"/>
              
              <!-- การกำหนด permission ใน AndroidManifest.xml -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permission android:name="com.hihonor.android.launcher.permission.CHANGE_BADGE"/>

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การตั้งค่าบน Portal

สำคัญ:
ต้องกำหนด Activity หลัก (entry Activity) ของแอปให้ถูกต้อง Huawei และ Honor ใช้ตรรกะเดียวกัน

alt text

พารามิเตอร์ขั้นสูงฝั่ง Server

พารามิเตอร์ คำอธิบาย คุณค่าทางธุรกิจ
badge_add_num เพิ่มตัวเลข Badge เหมาะกับแอปแชทเพื่อป้องกัน Badge ไม่ตรงกับสถานะจริง
badge_set_num กำหนด Badge เป็นค่าเฉพาะ เหมาะกับการแสดงสถานะ เช่น งานที่ต้องดำเนินการ
badge_class ระบุ Activity ที่ใช้ Badge เพื่อให้ Badge แสดงผลกับแอปเป้าหมายได้ถูกต้อง

Xiaomi Badge

อุปกรณ์ที่ใช้ MIUI 6 ขึ้นไป รองรับ Badge แบบตัวเลข
ระบบ MIUI จะจัดการตรรกะ Badge ให้อัตโนมัติ:

📱 รับการแจ้งเตือน → badge +1 (นักพัฒนาไม่ต้องเขียนโค้ดเพิ่ม)
🔄 เปิดแอป → badge ถูกล้างโดยอัตโนมัติ
MIUI 6+ รองรับทุกรุ่น ครอบคลุมผู้ใช้ Xiaomi ส่วนใหญ่


แบดจ์ OPPO: การตั้งค่าฝั่งเซิร์ฟเวอร์ของผู้ผลิต

ตั้งค่าใน options.third_party_channel.oppo ของคำขอ push:

{ "badge_operation_type": 1 }
              
              {
  "badge_operation_type": 1
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
  • badge_operation_type=1: เพิ่มแบดจ์ทีละ 1 ไม่ต้องใช้ badge_message_count
  • badge_operation_type=0: เขียนทับแบดจ์ปัจจุบันด้วย badge_message_count ค่า 0 คือล้างแบดจ์
  • ก่อนส่ง ต้องเปิดความสามารถแบดจ์ตัวเลขบนเดสก์ท็อปให้แอปใน OPPO Open Platform ฝั่งแอปไม่ต้องผสานโค้ดแบดจ์เพิ่ม

แบดจ์ vivo: ช่องทางผู้ผลิตและการควบคุมด้วย SDK

เพิ่มแบดจ์อัตโนมัติผ่านช่องทางผู้ผลิต:

{ "add_badge": true }
              
              {
  "add_badge": true
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ฟิลด์นี้อยู่ที่ options.third_party_channel.vivo สำหรับการแจ้งเตือนในเครื่องหรือการซิงก์จำนวนที่ยังไม่อ่านจากฝั่งธุรกิจ ให้เรียก MTPushPrivatesApi.setNotificationBadge เพื่อตั้งค่า และเรียก resetNotificationBadge เพื่อล้างค่า ผลลัพธ์จริงขึ้นกับสิทธิ์แบดจ์ vivo เวอร์ชันระบบ และสวิตช์แบดจ์เดสก์ท็อปของผู้ใช้ บน OriginOS การ +1 ใช้ API ระบบ add_badge ส่วน +N (N > 1) จะตั้งเป็นค่าเป้าหมายสะสม

ข้อแนะนำการใช้งานที่ดีที่สุด

กลยุทธ์ข้ามแพลตฟอร์มแบบรวมศูนย์

  • แบ่งระดับการรองรับ: ให้ความสำคัญกับการรองรับ Badge แบบตัวเลขเต็มรูปแบบบน iOS, Huawei, Xiaomi
  • สำรองความเข้ากันได้: ใช้จุดสีแดง (red dot) สำหรับ OPPO, VIVO และแพลตฟอร์มที่ไม่รองรับ
  • ประสบการณ์ผู้ใช้สม่ำเสมอ: พยายามให้ตรรกะของ Badge เหมือนกันมากที่สุดในทุกแพลตฟอร์ม
Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย