Thông báo đẩy trong phát triển di động: bản chất, các loại và cách hoạt động

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

Thông báo đẩy là một trong những cách hiệu quả nhất để tương tác với người dùng sau khi cài đặt ứng dụng. Chúng cho phép thông báo về tin nhắn mới, giảm giá, cập nhật nội dung hoặc nhắc nhở về giỏ hàng bị bỏ quên. Thông báo đẩy (push notifications) hoạt động thông qua các dịch vụ đám mây: Firebase Cloud Messaging (FCM) trên Android và Apple Push Notification Service (APNS) trên iOS. Trong bài viết này, chúng ta sẽ phân tích kiến trúc thông báo, các loại của chúng và quy trình thiết lập cho cả hai nền tảng. Tìm hiểu thêm trong tài liệu chính thức của FCM.

Những điểm chính

  • FCM — dịch vụ phổ quát cho Android và iOS (qua proxy APNS)
  • APNS — dịch vụ gốc của Apple cho iOS, macOS, watchOS
  • Rich Notifications chứa nội dung đa phương tiện (hình ảnh, nút bấm, âm thanh) qua App Extensions
  • Silent Push cập nhật dữ liệu nền mà không hiển thị cho người dùng
  • Device Token — định danh thiết bị duy nhất; cần được lưu trữ và cập nhật trên máy chủ
  • Notification Channels (Android) và Notification Categories (iOS) — phân nhóm và tùy chỉnh thông báo bởi người dùng

Thông báo đẩy là gì?

Thông báo đẩy là tin nhắn mà máy chủ gửi đến thiết bị di động mà không có yêu cầu từ ứng dụng. Tin nhắn đi qua dịch vụ đám mây (FCM hoặc APNS), dịch vụ này sẽ gửi nó đến thiết bị ngay cả khi ứng dụng đã đóng. Thông báo được chia thành hai loại: thông báo hiển thị (hiển thị cho người dùng) và thông báo dữ liệu (truyền dữ liệu để xử lý nền).

Kiến trúc thông báo đẩy bao gồm ba thành phần: (1) máy chủ ứng dụng — gửi yêu cầu đến FCM/APNS; (2) dịch vụ đám mây — định tuyến thông báo; (3) ứng dụng khách — nhận và xử lý thông báo. Máy chủ phải biết Device Token của thiết bị để gửi thông báo cụ thể đến thiết bị đó. Để gửi hàng loạt, sử dụng Topic Subscription — đăng ký thiết bị vào các kênh chủ đề (tin tức, khuyến mãi, thời tiết).

Trên mỗi thiết bị, thông báo được xử lý bởi hệ điều hành: Android — qua NotificationManager và NotificationChannel, iOS — qua UNUserNotificationCenter. Người dùng có thể cấu hình hành vi thông báo cho từng kênh: cho phép âm thanh, biểu ngữ, hiển thị trên màn hình khóa hoặc tắt hoàn toàn. Cấu hình kênh đúng cách làm tăng mức độ tương tác và giảm tỷ lệ hủy đăng ký.

Tại IT Sectr, chúng tôi thiết kế hệ thống thông báo đẩy có tính đến các đặc điểm nền tảng ngay từ đầu. Các quyết định chính: lựa chọn giữa FCM và APNS trực tiếp, định dạng tải trọng, tần suất gửi và cơ chế đăng ký. Điều này giúp tránh các tình huống thông báo không đến hoặc bị hệ thống chặn.

FCM vs APNS

Firebase Cloud Messaging (FCM) là dịch vụ đa nền tảng của Google để gửi thông báo. FCM hỗ trợ Android, iOS, Web và Flutter. Trên iOS, FCM hoạt động qua APNS: FCM gửi yêu cầu đến APNS, APNS gửi thông báo đến thiết bị. Ưu điểm của FCM: API duy nhất cho cả hai nền tảng, phân tích tích hợp, kiểm tra A/B, chủ đề và phân khúc đối tượng.

Apple Push Notification Service (APNS) là dịch vụ gốc của Apple. Chỉ hoạt động trên thiết bị Apple (iOS, macOS, watchOS, tvOS). Yêu cầu ủy quyền trực tiếp qua chứng chỉ TLS hoặc token (JWT). APNS cung cấp độ trễ gửi tối thiểu và tích hợp trực tiếp với các tính năng iOS: PushKit, Notification Service Extension và Cảnh báo quan trọng.

Lựa chọn giữa FCM và APNS phụ thuộc vào kiến trúc dự án. Nếu ứng dụng chỉ dành cho iOS — APNS cung cấp nhiều quyền kiểm soát hơn. Nếu đa nền tảng — FCM thuận tiện hơn với API duy nhất. Nhiều dự án sử dụng FCM làm dịch vụ chính và cấu hình thêm PushKit cho VoIP trên iOS. Cách tiếp cận kết hợp cho phép tận dụng ưu điểm của cả hai hệ thống.

Đặc điểm FCM APNS
Nền tảngAndroid, iOS, Web, FlutteriOS, macOS, watchOS, tvOS
Ủy quyềnKhóa máy chủ (Firebase Console)Chứng chỉ TLS hoặc token JWT
Tải trọng tối đa4 KB (data), 2 KB (notification)4 KB
Chủ đềTích hợp sẵn (Topic Messaging)Không (triển khai phía máy chủ)
Silent PushĐược hỗ trợĐược hỗ trợ (content-available)
PushKitKhôngCó (VoIP, hoạt động trực tiếp)
Phân tíchFirebase AnalyticsKhông tích hợp sẵn
Gửi đến thiết bị tắtHạn chế (phụ thuộc nhà sản xuất)Có, qua PushKit

Các loại thông báo (Rich, Silent, Interactive)

Rich Notification (Thông báo giàu phương tiện)

Rich Notification là thông báo chứa không chỉ văn bản mà còn nội dung đa phương tiện: hình ảnh, video, âm thanh và nút hành động. Trên Android, nó được triển khai qua các kiểu NotificationCompat: BigPictureStyle (hình ảnh lớn), BigTextStyle (văn bản thu gọn/mở rộng), InboxStyle (danh sách tin nhắn), MediaStyle (điều khiển phát lại). Trên iOS, sử dụng Notification Content Extension — một target riêng với giao diện tùy chỉnh cho thông báo mở rộng.

Silent Push (Thông báo im lặng)

Silent Push (content-available trên iOS) là thông báo được gửi mà không hiển thị cho người dùng. Nó dùng để cập nhật dữ liệu nền: đồng bộ nội dung, tải trước, cập nhật widget. Trên iOS, Silent Push yêu cầu bật Background Modes → Remote notifications. Trên Android, sử dụng FirebaseMessagingService với onMessageReceived để xử lý thông báo nền. Quan trọng: trên iOS, Silent Push có giới hạn tần suất và không đảm bảo gửi nếu ứng dụng không ở nền trước.

Interactive Notification (Thông báo tương tác)

Interactive Notification cho phép người dùng thực hiện hành động mà không cần mở ứng dụng. Trên Android, đó là các nút (Action) trong thông báo: "Trả lời", "Phê duyệt", "Từ chối". Các hành động được xử lý qua PendingIntent, khởi chạy BroadcastReceiver hoặc Service. Trên iOS, Notification Action được đăng ký qua UNNotificationAction và UNNotificationCategory. Nút có thể là foreground (mở ứng dụng), background (thực thi trong nền) hoặc destructive (hành động không thể hoàn tác — xóa, chặn).

Notification Content Extension và Service Extension

Notification Content Extension (iOS) — bộ điều khiển xem tùy chỉnh để hiển thị nội dung thông báo mở rộng khi nhấn giữ hoặc 3D Touch. Notification Service Extension (iOS) — phần mềm trung gian để sửa đổi nội dung thông báo trước khi hiển thị: giải mã tin nhắn E2E, tải hình ảnh, làm rối dữ liệu bảo mật. Trên Android không có tương tự trực tiếp — tất cả sửa đổi được thực hiện trong FirebaseMessagingService.

Thiết lập thông báo trên Android và iOS

Thiết lập trên Android

Đối với Android cần: (1) thêm Firebase SDK vào dự án (google-services.json); (2) tạo NotificationChannel (Android 8+) cho mỗi danh mục thông báo; (3) triển khai FirebaseMessagingService để nhận token và tin nhắn đến. Notification Channel là bắt buộc — nếu không có, thông báo sẽ không hiển thị trên Android 8+. Kênh có mức ưu tiên (IMPORTANCE_HIGH — âm thanh + cửa sổ bật lên, IMPORTANCE_LOW — không âm thanh) và người dùng có thể cấu hình trong cài đặt hệ thống.

Thiết lập trên iOS

Đối với iOS cần: (1) bật khả năng Push Notifications trong Xcode; (2) cấu hình khóa APNS trên Apple Developer Portal; (3) yêu cầu ủy quyền qua UNUserNotificationCenter.requestAuthorization — đây là hộp thoại hệ thống xuất hiện một lần. Phản hồi của người dùng rất quan trọng: nếu không được cấp quyền, thông báo sẽ không được gửi. Khuyến nghị giải thích cho người dùng lý do cần thông báo trước khi hiển thị hộp thoại hệ thống (pre-permission prompt).

Công cụ và Token

Device Token (iOS) và Registration Token (Android) là các định danh thiết bị duy nhất cho thông báo đẩy. Token được tạo khi khởi chạy ứng dụng lần đầu và có thể thay đổi: khi cài đặt lại, xóa dữ liệu, đặt lại cài đặt quyền riêng tư. Máy chủ phải cập nhật token thường xuyên. Firebase cung cấp API thuận tiện để quản lý token qua onNewToken, cũng như bảng điều khiển để gửi thông báo thử nghiệm (Firebase Console → Cloud Messaging).

Topic Subscription là một trong những cơ chế hiệu quả nhất của FCM. Thiết bị đăng ký vào một chủ đề (ví dụ: "news", "promo_users_ios") và máy chủ gửi thông báo theo chủ đề mà không cần lưu trữ danh sách token. Firebase Topics hỗ trợ tới một triệu người đăng ký mỗi chủ đề và gửi có điều kiện (Condition) qua ngôn ngữ biểu thức: "'news' in topics && ('US' in topics || 'UK' in topics)".

Notification Payload là cấu trúc JSON được gửi qua FCM/APNS. Đối với FCM: riêng notification (phần hiển thị — tiêu đề, nội dung, hình ảnh) và data (trường tùy chỉnh cho ứng dụng). Đối với APNS: từ điển aps với alert, badge, sound, category và content-available. Cấu trúc tải trọng chính xác rất quan trọng: nếu notification + data đến cùng lúc, ứng dụng ở nền có thể không nhận được data. Khuyến nghị chỉ sử dụng tin nhắn data cho Android và truyền trường hiển thị riêng qua FCM Console.

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

Sự khác biệt giữa FCM và APNS là gì?

FCM (Firebase Cloud Messaging) là dịch vụ của Google cho Android và thông báo đa nền tảng. APNS (Apple Push Notification Service) là dịch vụ của Apple chỉ dành cho iOS/macOS. FCM có thể gửi thông báo qua APNS trên iOS, hoạt động như máy chủ proxy.

Rich Notification là gì?

Rich Notification là thông báo nâng cao với nội dung đa phương tiện: hình ảnh, video, âm thanh, nút hành động. Trên iOS được triển khai qua Notification Content Extension; trên Android qua BigPictureStyle và InboxStyle.

Device Token hoạt động như thế nào?

Device Token là định danh thiết bị duy nhất để gửi thông báo đẩy. Trên Android là Registration Token từ FCM; trên iOS là Device Token từ APNS. Token có thể thay đổi khi cài đặt lại ứng dụng hoặc đặt lại cài đặt, do đó cần cập nhật trên máy chủ.

Silent Push là gì và tại sao cần nó?

Silent Push (thông báo im lặng) là thông báo không hiển thị cho người dùng. Nó được sử dụng để cập nhật dữ liệu nền: đồng bộ nội dung, cập nhật widget, tải trước. Trên iOS yêu cầu bật Background Modes → Remote notifications.

PushKit khác gì so với thông báo đẩy thông thường?

PushKit là framework của Apple để gửi thông báo ưu tiên cao được sử dụng trong ứng dụng VoIP (cuộc gọi, nhắn tin). PushKit gửi thông báo ngay cả khi ứng dụng đã bị đóng và đảm bảo khởi chạy ứng dụng để xử lý.

Tổng kết

  • FCM — dịch vụ đa nền tảng của Google; APNS — dịch vụ gốc của Apple
  • Rich Notification bao gồm phương tiện và nút bấm; Silent Push cập nhật dữ liệu không hiển thị
  • Notification Channel (Android) và Notification Category (iOS) — bắt buộc để phân nhóm thông báo
  • Device Token — định danh duy nhất; cần được cập nhật thường xuyên trên máy chủ
  • Topic Subscription đơn giản hóa gửi hàng loạt không cần lưu danh sách token
  • PushKit — cho thông báo quan trọng (VoIP, cảnh báo sinh mạng)
  • Notification Payload phải được cấu trúc theo nền tảng: notification + data cho FCM, aps cho APNS

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