Notification Action trong ứng dụng di động: khái niệm, các loại và thiết lập

Tác giả: IT Sectr Đã đăng: 2026-03-21 Thời gian đọc: 8 phút

Notification Action — các nút tương tác và trường nhập liệu xuất hiện trực tiếp trong thông báo push cho phép người dùng thực hiện hành động mà không cần mở ứng dụng. Đây là yếu tố chính của trải nghiệm người dùng, rút ngắn đường dẫn đến màn hình mục tiêu. Theo Android Developers, 2025, Notification Action tăng mức độ tương tác của người dùng lên đến 40% nhờ giảm ma sát trong tương tác.

Những điểm chính

  • Notification Action — phần tử tương tác trong thông báo push để thực hiện tác vụ nhanh chóng.
  • Trên Android, hành động được triển khai qua PendingIntent và NotificationCompat.Action.Builder.
  • Trên iOS, hành động được cấu hình qua UNNotificationAction và UNNotificationCategory.
  • Hỗ trợ nút bấm, nhập văn bản, đánh dấu hoàn thành và hành động trì hoãn.
  • Mỗi hành động phải được xử lý trong callback của ứng dụng khi chạm.

Notification Action là gì

Notification Action là một phần tử giao diện tương tác được thêm vào thông báo push để thực hiện một hành động cụ thể. Người dùng có thể trả lời tin nhắn, xác nhận tác vụ hoặc mở một màn hình cụ thể mà không cần vào ứng dụng. Các hành động xuất hiện dưới dạng nút bên dưới văn bản thông báo hoặc trong chế độ xem mở rộng khi vuốt.

Tại sao cần hành động trong thông báo

Mục đích chính của Notification Action là giảm số bước để người dùng đạt được mục tiêu. Thay vì mở ứng dụng và điều hướng đến màn hình mong muốn, người dùng chỉ cần nhấn một nút. Nghiên cứu cho thấy các ứng dụng có thông báo tương tác có mức độ tương tác cao hơn 25–40% so với thông báo đơn giản.

Biểu diễn trực quan trên các nền tảng khác nhau

Trên Android, Notification Action hiển thị dưới dạng nút biểu tượng ở chế độ xem gọn và nút văn bản ở chế độ mở rộng. Trên iOS, hành động xuất hiện khi nhấn giữ thông báo hoặc vuốt sang trái. Mỗi nền tảng có khuyến nghị riêng về số lượng hành động — Android khuyến nghị tối đa 3, iOS tối đa 4.

Nền tảngTối đa hành độngPhương thức hiển thịLoại hành động
Android3Biểu tượng + Văn bảnNút bấm, Nhập văn bản
iOS4Nhấn giữ / VuốtNút bấm, Nhập văn bản

Notification Action trên Android

Trên Android, Notification Action được tạo qua NotificationCompat.Builder sử dụng phương thức addAction(). Mỗi hành động chứa biểu tượng, văn bản và PendingIntent được kích hoạt khi chạm. Từ Android 7.0 (API 24), hỗ trợ nhập văn bản trực tiếp qua RemoteInput.

Tạo hành động cơ bản

Để tạo nút trong thông báo, cần định nghĩa PendingIntent sẽ được khởi chạy khi chạm. PendingIntent có thể mở Activity, khởi động Service hoặc BroadcastReceiver. Biểu tượng hành động phải là đơn sắc và tuân thủ Material Design.

kotlin
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("Yêu cầu xác nhận")
    .setContentText("Xác nhận hoàn thành tác vụ")
    .addAction(R.drawable.ic_accept, "Xác nhận", acceptPendingIntent)
    .build()

Hành động với nhập văn bản (RemoteInput)

Đối với các kịch bản cần nhập văn bản (ví dụ: trả lời tin nhắn), Android cung cấp RemoteInput. Người dùng nhập văn bản trực tiếp vào thông báo và ứng dụng nhận được mà không cần mở Activity. RemoteInput được hỗ trợ trên Android 7.0+ và yêu cầu xử lý rõ ràng trong BroadcastReceiver hoặc Service.

kotlin
val remoteInput = RemoteInput.Builder("reply_input")
    .setLabel("Nhập câu trả lời")
    .build()

val replyAction = NotificationCompat.Action.Builder(
    R.drawable.ic_reply, "Trả lời", replyPendingIntent
)
    .addRemoteInput(remoteInput)
    .build()

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .addAction(replyAction)
    .build()

Xử lý hành động trên Android

Khi một hành động được chạm, hệ thống khởi chạy PendingIntent đã chỉ định. Để lấy văn bản đã nhập qua RemoteInput, gọi RemoteInput.getResultsFromIntent(intent). Khuyến nghị xử lý hành động trong IntentService hoặc WorkManager để không chặn luồng UI.

Notification Action trên iOS

Trên iOS, Notification Action được triển khai qua framework UserNotifications. Nhà phát triển tạo danh mục hành động (UNNotificationCategory) và đăng ký chúng khi khởi động ứng dụng. Mỗi hành động được định nghĩa bởi đối tượng UNNotificationAction với định danh duy nhất.

Thiết lập danh mục và hành động trên iOS

Để thêm hành động vào thông báo push trên iOS, cần tạo một danh mục nhóm các hành động liên quan. Danh mục được chỉ định trong tải trọng thông báo qua trường category. Khi nhận thông báo, hệ thống hiển thị các hành động khả dụng từ danh mục đã chỉ định.

swift
import UserNotifications

class NotificationSetup {

    func registerNotificationCategories() {
        let approveAction = UNNotificationAction(
            identifier: "APPROVE_ACTION",
            title: "Phê duyệt",
            options: [.foreground]
        )

        let declineAction = UNNotificationAction(
            identifier: "DECLINE_ACTION",
            title: "Từ chối",
            options: [.destructive]
        )

        let category = UNNotificationCategory(
            identifier: "REQUEST_CATEGORY",
            actions: [approveAction, declineAction],
            intentIdentifiers: [],
            options: []
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([category])
    }
}

Xử lý hành động trên iOS

Khi người dùng chạm vào hành động, hệ thống gọi phương thức userNotificationCenter:didReceiveNotificationResponse trong delegate của UNUserNotificationCenter. response.actionIdentifier chứa định danh của hành động đã thực hiện. Để nhập văn bản, UNTextInputNotificationAction được sử dụng, cung cấp văn bản do người dùng nhập.

swift
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()
    }
}

Các loại và kịch bản Notification Action

Notification Action được phân loại theo loại tương tác và kịch bản sử dụng. Việc chọn đúng loại hành động ảnh hưởng trực tiếp đến trải nghiệm người dùng và chuyển đổi sang hành động mục tiêu.

Nút mở ứng dụng

Loại phổ biến nhất — nút mở ứng dụng trên một màn hình cụ thể. Trên Android, sử dụng PendingIntent.getActivity(), trên iOS — tùy chọn .foreground của UNNotificationAction. Được sử dụng cho các hành động cần giao diện đầy đủ, như xem chi tiết đơn hàng.

Hành động nền

Hành động thực thi mà không mở ứng dụng. Trên Android, sử dụng PendingIntent.getBroadcast() hoặc PendingIntent.getService(). Trên iOS — tùy chọn .authenticationRequired hoặc không có .foreground. Ví dụ: đánh dấu tác vụ đã hoàn thành, thích bài viết, thêm vào mục yêu thích.

Nhập văn bản

Cho phép người dùng nhập văn bản trực tiếp vào thông báo. Trên Android, triển khai qua RemoteInput, trên iOS — qua UNTextInputNotificationAction. Được sử dụng để trả lời tin nhắn, bình luận, nhập mã xác nhận một lần.

Hành động phá hủy

Hành động thay đổi dữ liệu không thể đảo ngược — xóa, từ chối, chặn. Trên Android, chúng được đánh dấu trực quan (màu đỏ trên một số hệ thống), trên iOS yêu cầu tùy chọn .destructive. Khuyến nghị yêu cầu xác nhận cho hành động phá hủy, ví dụ qua hộp thoại bổ sung hoặc lần chạm thứ hai.

Hành động nhập với nhập văn bản

Một lớp hành động riêng biệt — nhập văn bản trực tiếp từ thông báo. Trên Android, điều này được triển khai qua RemoteInput kết hợp với PendingIntent. Trên iOS, UNTextInputNotificationAction được sử dụng, kế thừa từ UNNotificationAction. Các hành động này được sử dụng cho trả lời nhanh trong ứng dụng nhắn tin, nhập mã khuyến mãi, điền biểu mẫu phản hồi hoặc đánh giá chất lượng dịch vụ. Văn bản đã nhập được truyền đến ứng dụng cùng với định danh hành động. Để xử lý chính xác nhập văn bản trên cả hai nền tảng, cần triển khai phân tích dữ liệu đã nhập và xác thực trước khi thực hiện hành động mục tiêu.

Xử lý thao tác chạm và ghi nhật ký

Xử lý Notification Action chính xác là rất quan trọng cho phân tích và trải nghiệm người dùng. Mỗi thao tác chạm phải được ghi nhật ký và hành động phải được thực thi đáng tin cậy ngay cả khi ứng dụng đã đóng.

Phân tích và theo dõi

Theo dõi mỗi thao tác chạm trên Notification Action qua hệ thống phân tích của bạn. Firebase Analytics, Mixpanel hoặc Yandex.Metrica cho phép ghi lại định danh hành động, thời gian chạm và ngữ cảnh thông báo. Dữ liệu này giúp tối ưu hóa chiến lược thông báo và tăng mức độ tương tác. Thử nghiệm A/B với các bộ hành động khác nhau giúp xác định các kịch bản tương tác hiệu quả nhất với người dùng.

Xử lý đáng tin cậy khi ứng dụng đã đóng

Nếu ứng dụng đã đóng, hệ thống vẫn gửi Intent hoặc UNNotificationResponse khi chạm vào hành động. Trên Android, sử dụng BroadcastReceiver để xử lý đảm bảo. Trên iOS, hệ thống khởi chạy ứng dụng trong nền và chuyển phản hồi đến delegate. Đối với các hành động quan trọng (xác nhận thanh toán, ủy quyền), thêm cơ chế thử lại và thông báo cho người dùng về việc hoàn thành thành công.

Tùy chỉnh trực quan nút trên Android

Từ Android 7.0, nhà phát triển có thể ảnh hưởng đến giao diện của Notification Action thông qua biểu tượng và màu sắc. Biểu tượng phải là đơn sắc (kênh alpha), kích thước 24x24 dp. Trên iOS, tùy chỉnh nút bị giới hạn — sử dụng màu sắc và phông chữ hệ thống. Material Design khuyến nghị nhóm hành động theo mức độ ưu tiên: hành động quan trọng nhất đầu tiên, hành động phá hủy cuối cùng.

Câu hỏi thường gặp

Có thể thêm bao nhiêu hành động vào một thông báo?

Android khuyến nghị tối đa 3 hành động, iOS — tối đa 4. Vượt quá giới hạn khiến một số hành động không hiển thị hoặc bị ẩn trong menu phụ.

Làm thế nào để thêm biểu tượng cho Notification Action trên Android?

Biểu tượng được truyền vào NotificationCompat.Action.Builder như một tài nguyên drawable. Biểu tượng phải là đơn sắc (kênh alpha), kích thước 24x24 dp và tuân thủ hướng dẫn Material Design.

Notification Action có hoạt động trên màn hình khóa không?

Có, nếu thông báo hiển thị trên màn hình khóa và cờ visibility được đặt thành VISIBILITY_PUBLIC. Trên iOS, cần tùy chọn .authenticationRequired cho các hành động yêu cầu ủy quyền.

Làm thế nào để xử lý thao tác chạm hành động nếu ứng dụng đã bị xóa khỏi bộ nhớ?

Trên Android, hệ thống tạo lại tiến trình và gửi Intent. Trên iOS, hệ thống khởi chạy ứng dụng trong nền. Có thể đảm bảo gửi bằng cách sử dụng BroadcastReceiver trên Android và UNNotificationServiceExtension trên iOS.

Trải nghiệm người dùng của hành động khác nhau thế nào giữa Android và iOS?

Trên Android, hành động hiển thị trực tiếp bên dưới thông báo dưới dạng biểu tượng. Trên iOS, hành động bị ẩn sau thao tác nhấn giữ hoặc vuốt. Thiết kế UX thông báo phải tính đến những khác biệt nền tảng này.

Tổng kết

  • Notification Action — nút và trường nhập liệu trong thông báo push để tương tác nhanh.
  • Trên Android, hành động được tạo qua NotificationCompat.Action với PendingIntent.
  • Trên iOS, hành động được định nghĩa qua UNNotificationAction với đăng ký danh mục.
  • Nhập văn bản được triển khai qua RemoteInput (Android) hoặc UNTextInputNotificationAction (iOS).
  • Số lượng hành động tối đa — 3 cho Android, 4 cho iOS.
  • Mỗi hành động nên được ghi nhật ký trong hệ thống phân tích để tối ưu hóa thông báo.
  • Để xử lý đáng tin cậy, sử dụng BroadcastReceiver trên Android và AppDelegate trên iOS.

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.

Thảo luận dự án

Đọc thêm