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

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

Thông báo Push là các tin nhắn được máy chủ gửi đến thiết bị di động ngay cả khi ứng dụng đóng. Theo Google Firebase, 2024, thông báo Push được xử lý thông qua các dịch vụ chuyên dụng — FCM trên Android và APNS trên iOS — hỗ trợ phân phối thời gian thực đến hàng triệu thiết bị cùng lúc. Chúng đã trở thành một phần không thể thiếu trong trải nghiệm người dùng trên các ứng dụng di động hiện đại.

Ý chính

  • Thông báo Push — tin nhắn từ máy chủ được phân phối qua FCM hoặc APNS.
  • FCM (Firebase Cloud Messaging) — dịch vụ chính cho Android có hỗ trợ iOS.
  • APNS (Apple Push Notification Service) — dịch vụ riêng của Apple cho iOS và macOS.
  • Các loại thông báo được chia thành thông báo văn bản, thông báo đa phương tiện và thông báo ẩn.
  • Token thiết bị — định danh duy nhất để phân phối tin nhắn Push theo địa chỉ.

Thông báo Push là gì?

Thông báo Push là các tin nhắn ngắn mà máy chủ ứng dụng gửi đến thiết bị người dùng mà không có yêu cầu rõ ràng. Chúng xuất hiện dưới dạng biểu ngữ, huy hiệu trên biểu tượng hoặc tín hiệu âm thanh, thu hút sự chú ý của người dùng vào ứng dụng và thông báo về các sự kiện quan trọng.

Định nghĩa và mục đích

Một thông báo Push bao gồm tiêu đề, nội dung tin nhắn và dữ liệu tùy chọn (payload). Không giống như SMS, thông báo Push miễn phí cho người dùng và được phân phối qua cơ sở hạ tầng dịch vụ đám mây — FCM cho Android và APNS cho iOS. Các mục tiêu chính của Thông báo Push: tăng mức độ tương tác, thông báo về sự kiện và đưa người dùng quay lại ứng dụng.

Thống kê sử dụng cho thấy Thông báo Push được cấu hình đúng cách làm tăng tỷ lệ giữ chân người dùng lên 30–60%. Tuy nhiên, tần suất thông báo quá mức dẫn đến hủy đăng ký — hơn 60% người dùng tắt thông báo nếu chúng được gửi nhiều hơn ba lần một ngày.

Kiến trúc hệ thống Push

Một hệ thống Push bao gồm ba thành phần: máy chủ ứng dụng, dịch vụ nền tảng (FCM/APNS) và ứng dụng khách trên thiết bị. Máy chủ gửi yêu cầu đến dịch vụ nền tảng, dịch vụ này phân phối thông báo đến thiết bị mục tiêu thông qua kết nối liên tục với hệ điều hành.

Thông báo Push hoạt động như thế nào?

Cơ chế phân phối của Thông báo Push dựa trên kết nối liên tục giữa thiết bị và dịch vụ nền tảng. Hệ điều hành duy trì một kênh liên lạc được mã hóa qua đó tất cả các tin nhắn Push đi qua.

Đăng ký và nhận token

Khi khởi chạy lần đầu, ứng dụng yêu cầu quyền gửi thông báo và nhận được token thiết bị duy nhất từ FCM hoặc APNS. Token này là một chuỗi dài đến 4 KB, định danh duy nhất phiên bản ứng dụng. Token thay đổi khi ứng dụng được cài đặt lại hoặc thiết bị được khôi phục từ bản sao lưu.

kotlin
class FirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        showNotification(message.notification)
    }
}

Gửi qua máy chủ ứng dụng

Máy chủ ứng dụng gửi yêu cầu HTTP đến API FCM hoặc API APNS, chỉ định token mục tiêu, tiêu đề, nội dung và dữ liệu bổ sung. Dịch vụ nền tảng trả lời với trạng thái phân phối: thành công, token không hợp lệ (thiết bị đã gỡ cài đặt ứng dụng) hoặc bị giới hạn tốc độ (vượt quá tần suất gửi).

js
fetch("https://fcm.googleapis.com/fcm/send", {
    method: "POST",
    headers: {
        "Authorization": "key=AIzaSy...",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        to: "device_token_here",
        notification: {
            title: "Tin nhắn mới",
            body: "Bạn có thông báo mới!"
        }
    })
})

FCM vs APNS: So sánh nền tảng

Sự lựa chọn giữa FCM và APNS phụ thuộc vào nền tảng mục tiêu. FCM hỗ trợ Android và iOS, trong khi APNS chỉ hỗ trợ hệ sinh thái Apple. Hãy xem xét các khác biệt chính quan trọng cho việc phát triển ứng dụng di động đa nền tảng.

Firebase Cloud Messaging (FCM)

FCM là dịch vụ của Google hoạt động trên Google Play Services. Nó hỗ trợ hai sơ đồ phân phối: thông báo hiển thị tự động và thông báo dữ liệu mà ứng dụng tự xử lý. FCM miễn phí và không có giới hạn về số lượng tin nhắn được gửi.

Apple Push Notification Service (APNS)

APNS là dịch vụ của Apple hỗ trợ tệp đính kèm đa phương tiện (hình ảnh, video, âm thanh) lên đến 10 MB. Việc gửi qua APNS yêu cầu chứng chỉ TLS hoặc khóa xác thực. APNS giới hạn tần suất gửi đến một thiết bị — không quá 150 thông báo mỗi phút, sau đó áp dụng giới hạn tốc độ.

Đặc điểmFCMAPNS
Nền tảngAndroid, iOS, WebiOS, macOS, watchOS
Yêu cầuGoogle Play ServicesApple Developer Program
Đa phương tiệnđến 4 KB (dữ liệu)đến 10 MB (tệp đính kèm)
Ưu tiênbình thường/caongay lập tức/tiết kiệm pin
Chi phímiễn phímiễn phí (cần tài khoản)

Các loại Thông báo Push

Thông báo Push được phân loại theo phương thức hiển thị và mục đích. Hiểu các loại giúp chọn chiến lược phù hợp cho mỗi kịch bản tương tác với người dùng.

Thông báo hiển thị (Display Notifications)

Loại phổ biến nhất — thông báo được hiển thị với tiêu đề và nội dung. Hệ điều hành tự động hiển thị nó trong bảng thông báo, trên màn hình khóa và dưới dạng biểu ngữ. Nhà phát triển có thể cấu hình âm thanh, rung, huy hiệu biểu tượng và nút hành động cho các hành động trực tiếp (trả lời, mở, bỏ qua).

Thông báo dữ liệu (Data Notifications)

Thông báo dữ liệu chứa chỉ payload mà không có hiển thị trực quan. Ứng dụng xử lý chúng trong nền: đồng bộ dữ liệu, cập nhật bộ nhớ đệm hoặc bắt đầu tải xuống. Trên Android, thông báo dữ liệu được phân phối đáng tin cậy; trên iOS, chỉ khi ứng dụng đang hoạt động hoặc thông qua tìm nạp nền.

Thông báo đa phương tiện và rich

Các hệ điều hành di động hiện đại hỗ trợ thông báo rich và đa phương tiện với hình ảnh, GIF, video và âm thanh. Trên iOS, điều này được thực hiện qua UNNotificationAttachment; trên Android, qua BigPictureStyle và InboxStyle để tùy chỉnh giao diện thông báo trong bảng hệ thống.

Thông báo ẩn (Silent)

Thông báo ẩn không hiển thị cho người dùng và được sử dụng để đồng bộ nền. Trên iOS, chúng có độ ưu tiên cao cho các tác vụ như cập nhật dữ liệu trước khi mở ứng dụng. Android xử lý chúng như thông báo dữ liệu với độ ưu tiên tối thiểu.

Cấu hình Thông báo Push trong dự án

Việc cấu hình Thông báo Push đòi hỏi các thao tác ở cấp cơ sở hạ tầng, máy chủ và mã khách. Hãy xem xét quy trình điển hình cho một dự án di động đa nền tảng.

Cấu hình FCM cho Android

Đối với Android, bạn cần tạo một dự án trong Firebase Console, thêm google-services.json vào dự án và cấu hình FirebaseMessagingService. Token thiết bị được lấy qua FirebaseInstanceId hoặc FirebaseMessaging.getInstance().token, sau đó được gửi đến máy chủ qua API khi khởi chạy lần đầu hoặc khi thay đổi.

Cấu hình APNS cho iOS

Đối với iOS, cần có đăng ký Apple Developer Program, tạo chứng chỉ Push hoặc khóa APNS trong Developer Portal, và bật khả năng Push Notifications trong Xcode. Việc đăng ký thông báo được thực hiện qua UIApplication.shared.registerForRemoteNotifications, nhận được deviceToken trong AppDelegate.

swift
import UIKit
import UserNotifications

@main
class AppDelegate: UIResponder,
    UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        let token = deviceToken
            .map { String.format("%02x", $0) }
            .joined()
        // gửi token đến máy chủ của bạn
    }
}

Gửi từ máy chủ

Ở phía máy chủ, Thông báo Push được gửi qua REST API hoặc Admin SDK. FCM sử dụng Firebase Admin SDK (có sẵn cho Node.js, Java, Python, Go), trong khi APNS sử dụng các thư viện pusher (pushy cho Java, apn2 cho Node.js). Nên lưu trữ token trong cơ sở dữ liệu với dấu thời gian cập nhật lần cuối.

Bảo mật Thông báo Push

Bảo mật Thông báo Push là cực kỳ quan trọng, vì dữ liệu bảo mật có thể được truyền qua chúng. Cả hai nền tảng đều cung cấp cơ chế bảo vệ cơ bản, nhưng nhà phát triển phải sử dụng chúng đúng cách.

Mã hóa payload

Payload của Thông báo Push có thể chứa dữ liệu cá nhân của người dùng: tên, số tiền giao dịch, liên kết tin nhắn. Ngay cả khi kênh liên lạc giữa FCM/APNS và thiết bị được mã hóa, dữ liệu có thể bị chặn ở cấp ứng dụng nếu phần mềm bên thứ ba chặn thông báo. Nên mã hóa payload nhạy cảm trên máy chủ bằng AES-256 và giải mã trên thiết bị bằng khóa được lưu trong Keychain (iOS) hoặc EncryptedSharedPreferences (Android).

Xác thực token trên máy chủ

Token thiết bị là một định danh phiên có thể bị xâm phạm nếu thiết bị bị hack hoặc lưu lượng truy cập bị chặn. Máy chủ ứng dụng nên xác thực token trước khi gửi: kiểm tra chúng với cơ sở dữ liệu, theo dõi token không hoạt động và xóa chúng khi có lỗi InvalidToken lặp lại. FCM và APNS trả về trạng thái InvalidRegistration cho token không hợp lệ — đừng bỏ qua nó.

Bảo vệ khỏi thư rác thông báo

Nếu không kiểm soát tần suất, Thông báo Push có thể trở thành công cụ gửi thư rác gây khó chịu cho người dùng và giảm tỷ lệ giữ chân. Đặt giới hạn trên máy chủ: không quá 5 thông báo mỗi giờ cho một người dùng và không quá 3 tin nhắn giống nhau. Đối với thông báo giao dịch (xác nhận đơn hàng, thay đổi mật khẩu), giới hạn có thể cao hơn — lên đến 10 mỗi giờ, vì chúng chứa thông tin quan trọng. Sử dụng giới hạn tốc độ ở cấp API gửi để kẻ tấn công không thể kích hoạt thông báo hàng loạt qua máy chủ của bạn.

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

Có thể gửi Thông báo Push mà không cần FCM trên Android không?

Có, nhưng kết nối trực tiếp đến APNS không được hỗ trợ trên Android — các thiết bị không có Google Play Services sử dụng các giải pháp thay thế như Huawei Mobile Services (HMS) và kết nối WebSocket tùy chỉnh. Tuy nhiên, FCM vẫn là tiêu chuẩn cho hầu hết các ứng dụng nhờ tính miễn phí và độ tin cậy.

Phân phối Push hoạt động như thế nào khi mất internet?

FCM và APNS lưu thông báo cuối cùng trên máy chủ của chúng và phân phối khi kết nối được khôi phục. Mỗi thiết bị chỉ lưu thông báo cuối cùng từ mỗi ứng dụng, vì vậy các tin nhắn trung gian sẽ bị mất trong thời gian mạng kéo dài.

Tại sao Thông báo Push không đến trên iOS?

Nguyên nhân phổ biến nhất là chứng chỉ Push hết hạn (có hiệu lực 1 năm), token thiết bị không hợp lệ, thông báo bị tắt trong cài đặt hoặc chế độ tiết kiệm pin được bật. Kiểm tra chứng chỉ trong Apple Developer Console và đảm bảo ứng dụng yêu cầu quyền qua UNUserNotificationCenter.

Làm thế nào để theo dõi người dùng đã mở Thông báo Push?

Trên Android, sử dụng PendingIntent trong NotificationCompat.Builder với theo dõi mở qua Intent. Trên iOS, sử dụng phương thức UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM cung cấp báo cáo phân phối và mở cho mỗi thông báo đã gửi.

Thông báo Push có ảnh hưởng đến tuổi thọ pin không?

Không đáng kể — Thông báo Push không duy trì kết nối liên tục; hệ điều hành sử dụng một kênh hệ thống chung cho tất cả các ứng dụng, giúp giảm thiểu tổng mức tiêu thụ điện. Việc gửi thường xuyên (cứ 5 phút) tiêu tốn nhiều năng lượng hơn do đánh thức thiết bị từ chế độ ngủ. Thông báo ẩn trên iOS tiêu tốn nhiều pin hơn do kích hoạt ứng dụng nền để xử lý dữ liệu nhận được.

Tổng kết

  • Thông báo Push — tin nhắn từ máy chủ đến thiết bị qua FCM hoặc APNS.
  • Token thiết bị — định danh duy nhất để phân phối Push theo địa chỉ.
  • FCM hỗ trợ Android, iOS và Web; APNS chỉ hỗ trợ hệ sinh thái Apple.
  • Thông báo dữ liệu được xử lý trong nền mà không hiển thị cho người dùng.
  • Thông báo đa phương tiện trên iOS hỗ trợ tệp đính kèm lên đến 10 MB; trên Android, qua các kiểu mở rộng.
  • Chứng chỉ APNS yêu cầu gia hạn hàng năm trong Apple Developer Portal.
  • Giới hạn tốc độ trong FCM và APNS bảo vệ người dùng khỏi thư rác thông báo bằng cách giới hạn tần suất gửi đến mỗi thiết bị.

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