Interactive Notification là thông báo push với các yếu tố tương tác cho phép thực hiện hành động mà không cần mở ứng dụng. Theo Apple Human Interface Guidelines (2025), các thông báo này giảm số bước đến hành động mục tiêu xuống 40%. Các nút hành động và trường nhập cho phép người dùng trả lời tin nhắn, thanh toán đăng ký hoặc xác nhận đặt chỗ trực tiếp từ bảng thông báo mà không cần mở ứng dụng.
Những điểm chính
Interactive Notification là định dạng mở rộng của thông báo push chứa các điều khiển tương tác: nút, công tắc và trường nhập văn bản. Không giống như thông báo tiêu chuẩn chỉ thông báo, thông báo tương tác cho phép người dùng thực hiện hành động mục tiêu trực tiếp từ bảng thông báo hoặc màn hình khóa. Theo Google Material Design (2025), thông báo tương tác được xử lý bởi hệ điều hành mà không khởi động quy trình ứng dụng chính — điều này tiết kiệm pin và tăng tốc thời gian phản hồi. Nhà phát triển định nghĩa một tập hợp các hành động thông qua danh mục trên iOS và kênh trên Android, và hệ thống hiển thị chúng tùy theo ngữ cảnh.
Mỗi thông báo tương tác bao gồm ba cấp độ: nội dung chính (tiêu đề, phần thân), hành động (nút) và trường nhập văn bản tùy chọn. Trên iOS, các thành phần này được kết hợp thông qua UNNotificationCategory, và trên Android — thông qua NotificationCompat.Action.Builder. Hệ thống hiển thị các nút bên dưới văn bản thông báo ở dạng thu gọn hoặc mở rộng tùy theo phiên bản hệ điều hành và độ dài văn bản. Người dùng nhìn thấy các hành động có sẵn ngay sau khi nhận thông báo và có thể thực hiện một trong số chúng mà không cần chuyển sang ứng dụng.
Cơ chế hoạt động của Interactive Notification được chia thành hai giai đoạn: đăng ký danh mục khi khởi động ứng dụng và xử lý hành động khi người dùng chạm. Ở giai đoạn đăng ký, nhà phát triển tạo các đối tượng danh mục với một tập hợp các hành động — mỗi hành động có một định danh, tiêu đề và tùy chọn. Khi nhận được thông báo push, hệ thống khớp nó với danh mục đã đăng ký qua trường categoryIdentifier và tự động thêm các nút tương ứng. Khi người dùng chạm vào nút, hệ thống gọi delegate UNUserNotificationCenter hoặc PendingIntent trên Android với định danh hành động và chuyển kết quả trở lại ứng dụng. Theo WWDC 2024, thời gian xử lý hành động tương tác trên iOS không vượt quá 200 ms với cấu hình phù hợp.
Thông báo tương tác được chia thành ba loại chính theo phương thức tương tác: dạng nút, dạng văn bản và đa phương tiện. Mỗi loại giải quyết nhiệm vụ riêng và được sử dụng trong các tình huống cụ thể. Việc chọn loại phụ thuộc vào ngữ cảnh — càng ít bước người dùng cần thực hiện, tỷ lệ chuyển đổi càng cao. Apple và Google khuyên dùng nút để xác nhận, trường nhập để trả lời và phương tiện để xem trước nội dung.
Loại phổ biến nhất là thông báo có một hoặc nhiều nút, mỗi nút thực hiện một hành động được xác định trước. Ví dụ, các nút “Chấp nhận” và “Từ chối” cho sự kiện lịch, “Thích” và “Trả lời” cho tin nhắn. iOS hỗ trợ tối đa bốn nút, Android — tối đa ba. Các nút có thể được nhóm theo mức độ ưu tiên: thông thường và phá hủy (có xác nhận). Apple khuyến nghị không quá hai nút chính để thuận tiện cho người dùng trên màn hình khóa.
RemoteInput là công nghệ cho phép người dùng nhập văn bản trực tiếp trong thông báo mà không cần mở ứng dụng. Trên iOS, UNTextInputNotificationAction được sử dụng cho mục đích này, trên Android — RemoteInput.Builder với khóa để trích xuất văn bản đã nhập. Nó thường được sử dụng nhất trong ứng dụng nhắn tin để trả lời nhanh tin nhắn. Văn bản đã nhập được chuyển đến ứng dụng thông qua dịch vụ thông báo hoặc trình xử lý cục bộ. Hạn chế là văn bản không thể chứa định dạng, chỉ là chuỗi đơn thuần.
Thông báo có tệp đính kèm đa phương tiện cho phép hiển thị hình ảnh, âm thanh và video trực tiếp trong bảng thông báo. Trên iOS, điều này được thực hiện thông qua UNNotificationAttachment, trên Android — thông qua NotificationCompat.MessagingStyle với BigPictureStyle. Nội dung đa phương tiện được tải bởi máy chủ nhà cung cấp push và gửi cùng với thông báo dưới dạng tệp đính kèm. Kích thước tệp đính kèm bị giới hạn — Apple khuyến nghị không quá 10 MB, Google — không quá 1 MB cho hình ảnh. Nội dung đa phương tiện làm tăng tính thông tin của thông báo cho tin tức, chợ trực tuyến và mạng xã hội.
Trên iOS, Interactive Notification được triển khai thông qua framework UserNotifications sử dụng UNNotificationCategory và UNNotificationAction. Ứng dụng đăng ký danh mục khi khởi động và khi nhận được thông báo, hệ thống tự động hiển thị các nút tương ứng. Để xử lý các hành động, cần triển khai phương thức userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler. Dưới đây là ví dụ về đăng ký danh mục với nút và trường nhập văn bản trong Swift.
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "Trả lời",
options: [.authenticationRequired],
textInputButtonTitle: "Gửi",
textInputPlaceholder: "Nhập tin nhắn…"
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
Sau khi gọi setNotificationCategories, hệ thống lưu các danh mục và sử dụng chúng cho tất cả các thông báo tiếp theo. Mã nên được gọi mỗi khi khởi động ứng dụng để đồng bộ danh mục với các phiên bản mới. Xử lý phản hồi được thực hiện trong delegate của trung tâm thông báo — ứng dụng nhận được định danh hành động và văn bản đã nhập để xử lý tiếp.
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completion: @escaping VoidBlock
) {
if response.actionIdentifier == "reply" {
let textResponse = response as! UNTextInputNotificationResponse
let message = textResponse.userText
sendMessage(message)
}
completion()
}
Phương thức userNotificationCenter được hệ thống gọi sau khi người dùng nhấn nút hoặc gửi văn bản. Bên trong trình xử lý, actionIdentifier được kiểm tra — nếu khớp với định danh đã đăng ký, ứng dụng trích xuất văn bản đã nhập từ userText và gửi đến máy chủ. Đối với các nút thông thường không có nhập văn bản, UNNotificationResponse được sử dụng mà không cần ép kiểu.
Trên Android, thông báo tương tác được tạo thông qua lớp NotificationCompat với các phương thức addAction và RemoteInput. Không giống như iOS, Android không yêu cầu đăng ký trước danh mục — các hành động được thêm trực tiếp vào mỗi thông báo thông qua Builder. Điều này mang lại sự linh hoạt hơn: mỗi thông báo có thể có một bộ nút duy nhất. Dưới đây là ví dụ về thông báo với nút trả lời trong Java sử dụng RemoteInput.
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("Trả lời")
.build();
PendingIntent replyIntent = PendingIntent.getBroadcast(
this, 1001,
new Intent("ACTION_REPLY"),
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(
R.drawable.ic_reply,
"Trả lời", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("Tin nhắn mới")
.setContentText("Xin chào! Bạn khỏe không?")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
Yếu tố chính là RemoteInput, kết nối trường nhập với hành động. Khi người dùng nhấn nút “Trả lời”, hệ thống mở hộp thoại nhập văn bản bên trong thông báo. Sau khi gửi, văn bản được chuyển qua Intent đến BroadcastReceiver hoặc Activity thông qua PendingIntent đã chỉ định. Để lấy văn bản trong bộ nhận, sử dụng RemoteInput.getResultsFromIntent(intent) với khóa “key_reply”.
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
Phương thức getResultsFromIntent trích xuất văn bản người dùng đã nhập từ Intent được hệ thống chuyển khi gửi phản hồi. Kết quả được trả về dưới dạng CharSequence, được chuyển đổi thành chuỗi để gửi đến máy chủ. Nếu người dùng đóng hộp thoại nhập mà không gửi, results sẽ trống — điều này cần được xem xét trong quá trình xử lý. Cách tiếp cận này cho phép triển khai trả lời nhanh mà không cần khởi chạy Activity.
Interactive Notification được sử dụng trong các ứng dụng thuộc bất kỳ loại nào yêu cầu hành động nhanh từ người dùng. Các tình huống hiệu quả nhất là ứng dụng nhắn tin để trả lời tin nhắn, thương mại điện tử để xác nhận đơn hàng và lịch để chấp nhận lời mời. Theo Localytics (2025), các ứng dụng có thông báo tương tác cho thấy tỷ lệ giữ chân cao hơn 28% vào ngày thứ 7. Dưới đây là bảng với các tình huống phổ biến và đặc điểm nền tảng.
| Tình huống | Hành động | Nền tảng |
|---|---|---|
| Nhắn tin | Trả lời bằng văn bản, Thích | iOS + Android |
| Thương mại điện tử | Xác nhận, hoãn, hủy | iOS + Android |
| Lịch | Chấp nhận, từ chối, có thể | iOS |
| Tin tức | Lưu, chia sẻ, mở | Android |
| Đặt chỗ | Xác nhận, dời lịch, hủy | iOS + Android |
Khi thiết kế thông báo tương tác, điều quan trọng là xem xét giới hạn — người dùng chỉ có thể thực hiện hành động một lần. Sau khi nhấn nút, thông báo biến mất hoặc chuyển sang trạng thái “đã hoàn thành”. Do đó, mỗi hành động phải không thể đảo ngược hoặc có xác nhận ở bước thứ hai.
Câu hỏi thường gặp
Interactive Notification là thông báo push có nút, trường nhập hoặc tệp đính kèm đa phương tiện cho phép người dùng thực hiện hành động mà không cần mở ứng dụng. Nó được hỗ trợ trên iOS thông qua UserNotifications và trên Android thông qua NotificationCompat.
Thông báo thông thường chỉ thông báo — người dùng chạm và mở ứng dụng. Thông báo tương tác chứa nút hoặc trường nhập và hành động được thực hiện trực tiếp trong bảng thông báo. Điều này rút ngắn đường dẫn đến hành động mục tiêu và giảm tải cho ứng dụng.
iOS hỗ trợ tối đa bốn nút, Android — tối đa ba. Trên Android, hai nút được hiển thị trên bảng thông báo, nút thứ ba có sẵn trong menu thả xuống. Apple khuyến nghị không quá hai nút chính để thuận tiện cho người dùng trên màn hình khóa.
Trên iOS sử dụng UNTextInputNotificationAction, trên Android — RemoteInput.Builder với khóa. Người dùng nhập văn bản vào hộp thoại bên trong thông báo và ứng dụng nhận nó thông qua delegate hoặc Intent mà không cần khởi chạy Activity.
Nhận thông báo push yêu cầu kết nối internet, nhưng bản thân tính tương tác (hiển thị nút, nhập văn bản) hoạt động ngoại tuyến. Việc gửi kết quả đến máy chủ có thể được hoãn lại cho đến khi kết nối được khôi phục.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm