Notification Action — ปุ่มโต้ตอบและช่องป้อนข้อมูลที่ปรากฏโดยตรงในการแจ้งเตือนแบบ push และช่วยให้ผู้ใช้ดำเนินการได้โดยไม่ต้องเปิดแอป นี่คือองค์ประกอบสำคัญของประสบการณ์ผู้ใช้ ที่ช่วยลดเส้นทางไปยังหน้าจอเป้าหมาย ตามข้อมูลจาก Android Developers, 2025 Notification Action ช่วยเพิ่มการมีส่วนร่วมของผู้ใช้ได้ถึง 40% โดยลดแรงเสียดทานในการโต้ตอบ
ประเด็นสำคัญ
Notification Action คือองค์ประกอบอินเทอร์เฟซแบบโต้ตอบที่เพิ่มเข้าไปในการแจ้งเตือนแบบ push เพื่อดำเนินการเฉพาะ ผู้ใช้สามารถตอบกลับข้อความ ยืนยันงาน หรือเปิดหน้าจอเฉพาะได้โดยไม่ต้องเข้าไปในแอป การดำเนินการจะแสดงเป็นปุ่มใต้ข้อความการแจ้งเตือนหรือในมุมมองแบบขยายเมื่อปัด
วัตถุประสงค์หลักของ Notification Action คือการลดจำนวนขั้นตอนที่ผู้ใช้ต้องทำเพื่อไปถึงเป้าหมาย แทนที่จะเปิดแอปและนำทางไปยังหน้าจอที่ต้องการ ผู้ใช้เพียงกดปุ่มเดียว การวิจัยแสดงให้เห็นว่าแอปที่มี การแจ้งเตือนแบบโต้ตอบ มีการมีส่วนร่วมสูงกว่า 25–40% เมื่อเทียบกับการแจ้งเตือนแบบธรรมดา
บน Android Notification Action จะแสดงเป็นปุ่มไอคอนในมุมมองแบบกะทัดรัดและปุ่มข้อความในโหมดขยายได้ บน iOS การดำเนินการจะปรากฏเมื่อกดค้างที่การแจ้งเตือนหรือปัดไปทางซ้าย แต่ละแพลตฟอร์ม มีคำแนะนำของตนเองเกี่ยวกับจำนวนการดำเนินการ — Android แนะนำไม่เกิน 3, iOS ไม่เกิน 4
| แพลตฟอร์ม | สูงสุดของการดำเนินการ | วิธีการแสดง | ประเภทการดำเนินการ |
|---|---|---|---|
| Android | 3 | ไอคอน + ข้อความ | ปุ่ม, การป้อนข้อความ |
| iOS | 4 | กดค้าง / ปัด | ปุ่ม, การป้อนข้อความ |
บน Android Notification Action จะถูกสร้างขึ้นผ่าน NotificationCompat.Builder โดยใช้เมธอด addAction() แต่ละการดำเนินการประกอบด้วยไอคอน ข้อความ และ PendingIntent ที่จะทำงานเมื่อแตะ ตั้งแต่ Android 7.0 (API 24) รองรับการป้อนข้อความโดยตรงผ่าน RemoteInput
ในการสร้างปุ่มในการแจ้งเตือน จำเป็นต้องกำหนด PendingIntent ที่จะถูกเรียกใช้เมื่อแตะ PendingIntent สามารถเปิด Activity เริ่ม Service หรือ BroadcastReceiver ไอคอนการดำเนินการต้องเป็นสีเดียวและสอดคล้องกับ Material Design
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("คำขอการยืนยัน")
.setContentText("โปรดยืนยันการทำงานให้เสร็จสิ้น")
.addAction(R.drawable.ic_accept, "ยืนยัน", acceptPendingIntent)
.build()
สำหรับสถานการณ์ที่ต้องการการป้อนข้อความ (เช่น การตอบกลับข้อความ) Android มี RemoteInput ผู้ใช้ป้อนข้อความโดยตรงในการแจ้งเตือน และแอปจะรับข้อความนั้นโดยไม่ต้องเปิด Activity RemoteInput รองรับบน Android 7.0+ และต้องการการจัดการที่ชัดเจนใน BroadcastReceiver หรือ Service
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("ป้อนคำตอบ")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "ตอบกลับ", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
เมื่อมีการแตะการดำเนินการ ระบบจะเรียกใช้ PendingIntent ที่ระบุ ในการรับข้อความที่ป้อนผ่าน RemoteInput ให้เรียก RemoteInput.getResultsFromIntent(intent) แนะนำให้จัดการการดำเนินการใน IntentService หรือ WorkManager เพื่อไม่ให้บล็อกเธรด UI
บน iOS Notification Action จะถูกนำไปใช้ผ่านเฟรมเวิร์ก UserNotifications นักพัฒนาสร้างหมวดหมู่การดำเนินการ (UNNotificationCategory) และลงทะเบียนเมื่อเริ่มต้นแอป แต่ละการดำเนินการถูกกำหนดโดยวัตถุ UNNotificationAction พร้อมตัวระบุที่ไม่ซ้ำกัน
ในการเพิ่มการดำเนินการในการแจ้งเตือนแบบ push บน iOS จำเป็นต้องสร้างหมวดหมู่ที่จัดกลุ่มการดำเนินการที่เกี่ยวข้อง หมวดหมู่จะระบุในเพย์โหลดการแจ้งเตือนผ่านฟิลด์ category เมื่อได้รับการแจ้งเตือน ระบบจะแสดงการดำเนินการที่มีจากหมวดหมู่ที่ระบุ
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "อนุมัติ",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "ปฏิเสธ",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
เมื่อผู้ใช้แตะการดำเนินการ ระบบจะเรียกเมธอด userNotificationCenter:didReceiveNotificationResponse ในตัวแทนของ UNUserNotificationCenter response.actionIdentifier ประกอบด้วยตัวระบุของการดำเนินการที่ดำเนินการ สำหรับการป้อนข้อความ จะใช้ UNTextInputNotificationAction ซึ่งให้ข้อความที่ผู้ใช้ป้อน
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action ถูกจำแนกตามประเภทการโต้ตอบและสถานการณ์การใช้งาน การเลือกประเภทการดำเนินการที่ถูกต้องส่งผลโดยตรงต่อประสบการณ์ผู้ใช้และการแปลงไปสู่การดำเนินการเป้าหมาย
ประเภทที่พบมากที่สุด — ปุ่มที่เปิดแอปบนหน้าจอเฉพาะ บน Android ใช้ PendingIntent.getActivity() บน iOS — ตัวเลือก .foreground ของ UNNotificationAction ใช้สำหรับการดำเนินการที่ต้องการอินเทอร์เฟซเต็มรูปแบบ เช่น การดูรายละเอียดคำสั่งซื้อ
การดำเนินการที่ทำงานโดยไม่ต้องเปิดแอป บน Android ใช้ PendingIntent.getBroadcast() หรือ PendingIntent.getService() บน iOS — ตัวเลือก .authenticationRequired หรือไม่มี .foreground ตัวอย่าง: ทำเครื่องหมายงานว่าสำเร็จ กดถูกใจโพสต์ เพิ่มในรายการโปรด
ช่วยให้ผู้ใช้ป้อนข้อความโดยตรงในการแจ้งเตือน บน Android ดำเนินการผ่าน RemoteInput บน iOS — ผ่าน UNTextInputNotificationAction ใช้สำหรับตอบกลับข้อความ แสดงความคิดเห็น ป้อนรหัสยืนยันแบบครั้งเดียว
การดำเนินการที่เปลี่ยนแปลงข้อมูลอย่างไม่สามารถย้อนกลับได้ — การลบ การปฏิเสธ การบล็อก บน Android จะถูกเน้นด้วยสายตา (สีแดงในบางระบบ) บน iOS ต้องการตัวเลือก .destructive แนะนำให้ขอการยืนยันสำหรับการดำเนินการแบบทำลาย เช่น ผ่านไดอะล็อกเพิ่มเติมหรือการแตะครั้งที่สอง
คลาสแยกของการดำเนินการ — การป้อนข้อความโดยตรงจากการแจ้งเตือน บน Android ดำเนินการผ่าน RemoteInput ร่วมกับ PendingIntent บน iOS ใช้ UNTextInputNotificationAction ซึ่งสืบทอดจาก UNNotificationAction การดำเนินการดังกล่าวใช้สำหรับ การตอบกลับด่วน ในแอปแชท การป้อนรหัสโปรโมชั่น การกรอกแบบฟอร์มคำติชม หรือการให้คะแนนคุณภาพบริการ ข้อความที่ป้อนจะถูกส่งไปยังแอปพร้อมกับตัวระบุการดำเนินการ สำหรับการจัดการการป้อนข้อความที่ถูกต้องบนทั้งสองแพลตฟอร์ม จำเป็นต้องดำเนินการแยกวิเคราะห์ข้อมูลที่ป้อนและการตรวจสอบความถูกต้องก่อนดำเนินการเป้าหมาย
การจัดการ Notification Action ที่ถูกต้องมีความสำคัญต่อการวิเคราะห์และประสบการณ์ผู้ใช้ การแตะแต่ละครั้งต้องถูกบันทึก และการดำเนินการต้องดำเนินการอย่างน่าเชื่อถือแม้ว่าแอปจะถูกปิด
ติดตามการแตะ Notification Action แต่ละครั้งผ่านระบบวิเคราะห์ของคุณ Firebase Analytics, Mixpanel หรือ Yandex.Metrica ช่วยให้บันทึกตัวระบุการดำเนินการ เวลาแตะ และบริบทการแจ้งเตือน ข้อมูลนี้ช่วยปรับ กลยุทธ์การแจ้งเตือน และเพิ่มการมีส่วนร่วม การทดสอบ A/B ด้วยชุดการดำเนินการที่แตกต่างกันช่วยระบุสถานการณ์การโต้ตอบที่มีประสิทธิภาพสูงสุดกับผู้ใช้
หากแอปถูกปิด ระบบยังคงส่ง Intent หรือ UNNotificationResponse เมื่อแตะการดำเนินการ บน Android ใช้ BroadcastReceiver สำหรับการจัดการที่รับประกัน บน iOS ระบบจะเริ่มแอปในเบื้องหลังและส่งการตอบกลับไปยังตัวแทน สำหรับการดำเนินการที่สำคัญ (การยืนยันการชำระเงิน การอนุญาต) ให้เพิ่มกลไกการลองใหม่และแจ้งให้ผู้ใช้ทราบเกี่ยวกับความสำเร็จ
ตั้งแต่ Android 7.0 นักพัฒนาสามารถมีอิทธิพลต่อลักษณะของ Notification Action ผ่านไอคอนและสี ไอคอนต้องเป็นสีเดียว (ช่องอัลฟ่า) ขนาด 24x24 dp บน iOS การปรับแต่งปุ่มมีข้อจำกัด — ใช้สีและแบบอักษรของระบบ Material Design แนะนำให้จัดกลุ่มการดำเนินการตามลำดับความสำคัญ: การดำเนินการที่สำคัญที่สุดก่อน การดำเนินการแบบทำลายสุดท้าย
คำถามที่พบบ่อย
Android แนะนำไม่เกิน 3 การดำเนินการ iOS — สูงสุด 4 การเกินขีดจำกัดทำให้บางการดำเนินการไม่แสดงหรือซ่อนในเมนูย่อย
ไอคอนจะถูกส่งใน NotificationCompat.Action.Builder เป็นทรัพยากร drawable ไอคอนต้องเป็นสีเดียว (ช่องอัลฟ่า) ขนาด 24x24 dp และสอดคล้องกับแนวทาง Material Design
ใช่ หากการแจ้งเตือนแสดงบนหน้าจอล็อคและตั้งค่าแฟล็ก visibility เป็น VISIBILITY_PUBLIC บน iOS จำเป็นต้องมีตัวเลือก .authenticationRequired สำหรับการดำเนินการที่ต้องการการอนุญาต
บน Android ระบบจะสร้างกระบวนการใหม่และส่ง Intent บน iOS ระบบจะเริ่มแอปในเบื้องหลัง การรับประกันการส่งสามารถทำได้โดยใช้ BroadcastReceiver บน Android และ UNNotificationServiceExtension บน iOS
บน Android การดำเนินการจะมองเห็นได้โดยตรงใต้การแจ้งเตือนเป็นไอคอน บน iOS การดำเนินการจะซ่อนอยู่หลังการกดค้างหรือการปัด การออกแบบ UX ของการแจ้งเตือนต้องคำนึงถึงความแตกต่างของแพลตฟอร์มเหล่านี้
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม