Firebase Cloud Messaging: คืออะไร หลักการทำงาน และการแจ้งเตือน push

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-04-29 เวลาอ่าน: 9 นาที

Firebase Cloud Messaging (FCM) เป็นบริการส่งข้อความและการแจ้งเตือนแบบ push ข้ามแพลตฟอร์มจาก Google ที่ออกแบบมาสำหรับแอปพลิเคชันมือถือและเว็บ FCM ช่วยให้การส่งข้อมูลระหว่างเซิร์ฟเวอร์และอุปกรณ์ไคลเอนต์เชื่อถือได้โดยไม่จำเป็นต้องรักษาการเชื่อมต่อเครือข่ายอย่างถาวร ตามข้อมูลจาก Firebase Documentation, 2026 โครงสร้างพื้นฐานของ FCM รองรับข้อความมากกว่า 300 พันล้าน ข้อความต่อวันทั่วโลก บริการนี้รองรับทั้งการแจ้งเตือนที่แสดงผลอัตโนมัติและข้อความข้อมูลสำหรับการส่งข้อมูลในพื้นหลัง

สิ่งสำคัญ

  • FCM เป็นบริการแจ้งเตือน push ฟรีจาก Google ที่รองรับ Android, iOS และ Web ผ่าน API เดียวและ Firebase Console
  • ประเภทข้อความ — ข้อความแจ้งเตือน (notification) จะแสดงผลโดยอัตโนมัติจากระบบ ส่วนข้อความข้อมูล (data) ช่วยให้ส่ง JSON ที่กำหนดเองและประมวลผลในแอปพลิเคชันได้
  • โทเคนอุปกรณ์ — แต่ละแอปพลิเคชันได้รับ Registration Token เฉพาะที่เซิร์ฟเวอร์ใช้สำหรับส่ง push แบบระบุเป้าหมาย
  • ลำดับความสำคัญในการจัดส่ง — ลำดับความสำคัญ normal และ high กำหนดพฤติกรรมของระบบเมื่อประหยัดแบตเตอรี่: ข้อความ high จะปลุกอุปกรณ์จากโหมด Doze
  • หัวข้อและกลุ่ม — FCM รองรับการสมัครรับหัวข้อสำหรับการส่งแบบกลุ่มและ Device Groups สำหรับส่งไปยังหลายอุปกรณ์ของผู้ใช้คนเดียว

Firebase Cloud Messaging คืออะไร

Firebase Cloud Messaging คือบริการคลาวด์ของ Google ที่ช่วยส่งการแจ้งเตือนแบบ push และข้อความข้อมูลระหว่างเซิร์ฟเวอร์ของแอปพลิเคชันกับอุปกรณ์ไคลเอนต์ บริการนี้ได้แทนที่ Google Cloud Messaging (GCM) รุ่นเก่าและกลายเป็นโซลูชันมาตรฐานสำหรับการส่ง push ในระบบนิเวศของ Firebase FCM รองรับ Android, iOS, Web และ Unity โดยมีอินเทอร์เฟซการส่งแบบเดียวกันไม่ว่าแพลตฟอร์มเป้าหมายจะเป็นใด

ความสามารถหลักของ FCM

บริการนี้มีกลไกการส่งข้อความหลายแบบ แต่ละแบบแก้ปัญหาเฉพาะ ข้อความแจ้งเตือน (Notification) จะแสดงผลโดยระบบโดยอัตโนมัติเมื่อได้รับ — นักพัฒนาไม่จำเป็นต้องเขียนโค้ดเพื่อแสดงการแจ้งเตือน ข้อความข้อมูล (Data) จะส่ง payload ที่กำหนดเองในรูปแบบคู่คีย์-ค่าและประมวลผลภายในแอปพลิเคชัน ข้อความแบบผสมประกอบด้วยทั้งส่วนที่มองเห็นได้และส่วนที่ซ่อนเพื่อความยืดหยุ่นสูงสุด

ข้อดีเหนือการสร้างโซลูชันของตนเอง

การสร้างเซิร์ฟเวอร์ push ของตนเองต้องรักษาการเชื่อมต่อ TCP กับทุกอุปกรณ์อย่างต่อเนื่อง ซึ่งไม่มีประสิทธิภาพและไม่ปลอดภัย FCM ใช้ โครงสร้างพื้นฐานเดียวของ Google ที่รองรับการเชื่อมต่อกับอุปกรณ์หลายพันล้านเครื่องพร้อมกัน บริการนี้จัดการการลองส่งใหม่ คิวข้อความ และการปรับสมดุลโหลดโดยอัตโนมัติ ช่วยให้นักพัฒนาไม่ต้องแก้ไขปัญหาเหล่านี้ด้วยตนเอง

Firebase Cloud Messaging ทำงานอย่างไร

สถาปัตยกรรมของ FCM ประกอบด้วยสามองค์ประกอบหลัก: เซิร์ฟเวอร์ผู้ให้บริการ (backend ของคุณ), เซิร์ฟเวอร์ Firebase Cloud Messaging และแอปพลิเคชันไคลเอนต์บนอุปกรณ์ เมื่อเซิร์ฟเวอร์ส่งข้อความ ข้อความจะเข้าสู่โครงสร้างพื้นฐานของ FCM ก่อน ซึ่งจะกำหนดเส้นทางไปยังอุปกรณ์เป้าหมาย หากอุปกรณ์ออฟไลน์ FCM จะเก็บข้อความในคิวและส่งเมื่อมีการเชื่อมต่ออีกครั้ง

การลงทะเบียนอุปกรณ์และการรับโทเคน

เมื่อเริ่มต้นแอปพลิเคชันครั้งแรก แอปจะเรียก Firebase SDK ซึ่งลงทะเบียนอุปกรณ์ในบริการ FCM และรับ Registration Token เฉพาะ โทเคนนี้เป็นสตริงยาวประมาณ 150 อักขระและระบุอินสแตนซ์เฉพาะของแอปพลิเคชันบนอุปกรณ์เฉพาะ โทเคนสามารถเปลี่ยนแปลงได้เมื่อติดตั้งแอปใหม่ ล้างข้อมูล หรือกู้คืนจากข้อมูลสำรอง — นักพัฒนาควรจัดการการอัปเดตโทเคนผ่าน delegate onNewToken

วงจรชีวิตของข้อความ

เมื่อเซิร์ฟเวอร์ส่งคำขอผ่าน FCM API ข้อความจะผ่านหลายขั้นตอน การรับและตรวจสอบ — FCM ตรวจสอบความถูกต้องของคำขอและการมีอยู่ของอุปกรณ์เป้าหมาย คิว — หากอุปกรณ์ไม่พร้อมใช้งาน ข้อความจะเข้าสู่คิวเก็บข้อมูล การกำหนดเส้นทาง — FCM กำหนดช่องทางการส่งที่เหมาะสมที่สุด (Wifi หรือข้อมูลมือถือ) การส่ง — ระบบส่งข้อความไปยังแอปพลิเคชันเป้าหมาย หลังจากส่งสำเร็จ FCM จะส่งคืน ID ข้อความให้เซิร์ฟเวอร์

ประเภทข้อความใน FCM

Firebase Cloud Messaging รองรับข้อความสามประเภท แต่ละประเภทมีลักษณะการประมวลผลบนฝั่งไคลเอนต์แตกต่างกัน ข้อความแจ้งเตือน (Notification) จะถูกประมวลผลโดยบริการระบบ Google Play Services ใน Android และ APNs ใน iOS และแสดงผลเป็นแบนเนอร์ push โดยอัตโนมัติ ข้อความข้อมูล (Data) จะถูกส่งไปยังแอปพลิเคชันโดยตรงและประมวลผลผ่าน callback onMessageReceived ใน Android และ application(_:didReceiveRemoteNotification:) ใน iOS

ข้อความแจ้งเตือน (Notification)

ข้อความแจ้งเตือนประกอบด้วยฟิลด์ที่กำหนดไว้ล่วงหน้า: title, body, URL รูปภาพ และเสียงแจ้งเตือน ระบบจะสร้างและแสดง การแจ้งเตือนในถาดระบบโดยอัตโนมัติ แม้ว่าแอปพลิเคชันจะอยู่ในพื้นหลังหรือถูกปิด ผู้ใช้จะเห็นแบนเนอร์มาตรฐานพร้อมหัวข้อและข้อความ และเมื่อคลิก แอปพลิเคชันจะเปิดพร้อมข้อมูลที่ส่งใน payload หากแอปพลิเคชันทำงานอยู่ ข้อความแจ้งเตือนสามารถสกัดกั้นและประมวลผลในโค้ดได้

ข้อความข้อมูล (Data)

ข้อความข้อมูลคือชุดคู่คีย์-ค่าที่กำหนดเองโดยไม่มีฟิลด์ที่กำหนดไว้ล่วงหน้า Payload จะไม่ถูกประมวลผล โดยระบบอัตโนมัติ — แอปพลิเคชันได้รับข้อมูลดิบและสามารถตีความได้ตามต้องการ ข้อความข้อมูลใช้สำหรับซิงค์ข้อมูลในพื้นหลัง อัปเดตแคชในเครื่อง เรียกการซิงค์ หรือส่งคำสั่งโดยไม่แสดงการแจ้งเตือน ใน Android ข้อความข้อมูลจะถูกส่งเสมอ แม้ว่าแอปจะถูกปิดหรือทำงานในพื้นหลัง

ข้อความแบบผสม

FCM สามารถส่งข้อความที่มีทั้งส่วนแจ้งเตือน (สำหรับแสดงผล) และส่วนข้อมูล (สำหรับประมวลผล) Payload แบบผสม ประกอบด้วยทั้งฟิลด์แจ้งเตือนที่กำหนดไว้ล่วงหน้าและคีย์ข้อมูลที่กำหนดเอง ระบบจะแสดงการแจ้งเตือนจากส่วนแจ้งเตือน และส่วนข้อมูลจะถูกส่งไปยัง intent extras ของแอปพลิเคชันเมื่อเปิด เหมาะสำหรับสถานการณ์ที่ต้องแสดงการแจ้งเตือนให้ผู้ใช้เห็นและส่งบริบทสำหรับไปยังหน้าจอเฉพาะพร้อมกัน

ประเภทแสดงผลอัตโนมัติประมวลผลในพื้นหลังตัวอย่าง
Notificationใช่ โดยระบบอัตโนมัติ ไม่ต้องเขียนโค้ดการแจ้งเตือน push ต้อนรับ
Dataไม่ผ่าน callback ของแอปซิงค์ข้อมูลในพื้นหลัง
แบบผสมใช่ ส่วนแจ้งเตือนส่วนข้อมูลเมื่อเปิดการแจ้งเตือน + ลิงก์ไปยังคำสั่งซื้อ

การตั้งค่า FCM ใน Android

การผสานรวม FCM ใน Android เริ่มต้นด้วยการเชื่อมต่อ Firebase SDK ผ่านไฟล์ build.gradle ในระดับแอปพลิเคชัน หลังจากเพิ่ม dependencies และไฟล์ google-services.json แอปพลิเคชันจะได้รับ Registration Token โดยอัตโนมัติ ซึ่งส่งผ่าน callback FirebaseMessagingService เพื่อรับการแจ้งเตือน ต้องสร้างบริการที่สืบทอดจาก FirebaseMessagingService และลงทะเบียนใน AndroidManifest.xml

การเริ่มต้นและการรับโทเคน

หลังจากเชื่อมต่อ SDK แล้ว Firebase จะสร้างโทเคนอุปกรณ์โดยอัตโนมัติโดยไม่ต้องเขียนโค้ดเพิ่มเติม โทเคนสามารถเข้าถึงได้ ผ่าน FirebaseMessaging.getInstance().token ซึ่งส่งคืน Task สำหรับติดตามการอัปเดตโทเคน ให้กำหนดเมธอด onNewToken ในบริการใหม่ ต้องส่งโทเคนไปยังเซิร์ฟเวอร์ผู้ให้บริการเพื่อให้เซิร์ฟเวอร์สามารถส่ง push ไปยังอุปกรณ์นี้ได้

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

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

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "ข้อความใหม่"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

การลงทะเบียนบริการใน Manifest

ต้องลงทะเบียนบริการสำหรับรับข้อความ FCM ใน AndroidManifest.xml พร้อม intent-filter ที่เหมาะสม การเพิ่มแท็ก service พร้อมสิทธิ์ INTERNET และการระบุ action หากไม่ได้ลงทะเบียนบริการ ข้อความจะไม่ถูกส่งไปยังแอปพลิเคชันในโหมดพื้นหลัง สำหรับการแสดงการแจ้งเตือนใน Android 13+ ต้องได้รับสิทธิ์ runtime POST_NOTIFICATIONS

xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
    "android.permission.POST_NOTIFICATIONS" />

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name=
            "com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

การตั้งค่า FCM ใน iOS

การผสานรวม FCM ใน iOS ต้องตั้งค่าทั้งในฝั่ง Apple Push Notification Service (APNs) และใน Firebase Console ต่างจาก Android ที่ FCM จัดการการเชื่อมต่อโดยตรง ใน iOS FCM ใช้ APNs เป็นเลเยอร์การขนส่ง แอปพลิเคชันลงทะเบียนเพื่อรับการแจ้งเตือน push ผ่าน UIApplication.shared.registerForRemoteNotifications และ Firebase SDK จะสกัดกั้นโทเคนอุปกรณ์ที่ได้รับและเชื่อมโยงกับ FCM Registration Token

การตั้งค่า APNs และการลงทะเบียนการแจ้งเตือน

สำหรับการทำงานของ FCM ใน iOS ต้องอัปโหลดคีย์ APNs หรือใบรับรองใน Firebase Console คีย์ APNs เป็นวิธีการยืนยันตัวตนที่ทันสมัยโดยไม่ต้องใช้ใบรับรอง (แนะนำโดย Apple) คีย์ถูกสร้างขึ้นใน Apple Developer Portal ในส่วน Keys และอัปโหลดในการตั้งค่า Cloud Messaging ใน Firebase Console หลังจากตั้งค่า APNs แอปพลิเคชันจะขอสิทธิ์การแจ้งเตือนผ่าน UNUserNotificationCenter และลงทะเบียนผ่าน APNs

swift
import Firebase
import UserNotifications

class AppDelegate: NSObject, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current()
            .requestAuthorization(options: [.alert, .sound, .badge])
        application.registerForRemoteNotifications()
        return true
    }

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        Messaging.messaging()
            .apnsToken = deviceToken
    }
}

การจัดการการแจ้งเตือนขาเข้า

สำหรับประมวลผลการแจ้งเตือนที่ได้รับ ให้ implement delegate ของ UNUserNotificationCenter เมธอด willPresent จะถูกเรียกเมื่อได้รับการแจ้งเตือนขณะที่แอปพลิเคชันทำงานอยู่ — ที่นี่สามารถแสดงการแจ้งเตือนแบบ in-app ที่กำหนดเองหรือละเว้นแบนเนอร์ของระบบ เมธอด didReceive จะถูกเรียกเมื่อผู้ใช้คลิกที่การแจ้งเตือน — ที่นี่จะดำเนินการนำทางไปยังหน้าจอที่เกี่ยวข้อง สำหรับข้อความข้อมูล ให้ใช้ delegate ของ MessagingDelegate ซึ่งรับ payload เมื่อได้รับข้อความ FCM ในพื้นหลัง

การส่งข้อความจากเซิร์ฟเวอร์

การส่งจากฝั่งเซิร์ฟเวอร์ ข้อความ FCM ทำผ่าน HTTP v1 API ของ Firebase Cloud Messaging หรือ Firebase Cloud Messaging API รุ่นเก่า HTTP v1 API เป็นวิธีที่แนะนำ ใช้การยืนยันตัวตน OAuth 2.0 ผ่าน Service Account และรองรับความสามารถที่ทันสมัยทั้งหมดของ FCM รวมถึงการวิเคราะห์การจัดส่งและการทดสอบ A/B คำขอจะถูกส่งด้วยเมธอด POST ไปยัง endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send

รูปแบบคำขอ HTTP v1

เนื้อหาของคำขอประกอบด้วยออบเจ็กต์ JSON พร้อมข้อมูลเกี่ยวกับข้อความ: target (โทเคน หัวข้อ หรือเงื่อนไข), notification (สำหรับแสดงผล) และ data (payload ที่กำหนดเอง) การยืนยันตัวตนผ่าน คีย์ JSON ของ Service Account ซึ่งอัปโหลดไปยังตัวแปรสภาพแวดล้อมของเซิร์ฟเวอร์ โทเคนการเข้าถึงถูกสร้างขึ้นผ่านไลบรารี google-auth-library Google แนะนำให้ใช้ Firebase Admin SDK เพื่อจัดการการยืนยันตัวตนและการลองใหม่โดยอัตโนมัติ

js
const admin = require("firebase-admin")

const serviceAccount = require("./serviceAccountKey.json")

admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })

const message = {
    token: "device_registration_token",
    notification: { title: "ส่วนลด 20%", body: "สำหรับบริการทั้งหมดวันนี้" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("ส่งสำเร็จ:", response)
    })
    .catch(error => {
        console.log("ข้อผิดพลาดในการส่ง:", error)
    })

หัวข้อและการส่งแบบกลุ่ม

สำหรับส่งการแจ้งเตือนไปยังกลุ่มผู้ใช้ FCM รองรับการสมัครรับหัวข้อ หัวข้อ (topic) คือช่องทางที่มีชื่อซึ่งแอปพลิเคชันไคลเอนต์สมัครผ่าน FirebaseMessaging.getInstance().subscribeToTopic() เซิร์ฟเวอร์สามารถส่งข้อความไปยังหัวข้อและข้อความจะถูกส่งไปยังอุปกรณ์ที่สมัครทั้งหมด หัวข้อเหมาะสำหรับการส่งข่าวสาร การแจ้งเตือนโปรโมชัน และ push ตามเหตุการณ์ สำหรับการแบ่งกลุ่มที่แม่นยำยิ่งขึ้น ให้ใช้เงื่อนไข (conditions) โดยอิงจากหลายหัวข้อด้วยตัวดำเนินการทางตรรกะ

คำถามที่พบบ่อย

FCM และ APNs แตกต่างกันอย่างไร

FCM ทำงาน บน Android ผ่านโครงสร้างพื้นฐานของ Google เอง ส่วนใน iOS ใช้ APNs เป็นโปรโตคอลการขนส่ง FCM มี API เดียวสำหรับทั้งสองแพลตฟอร์ม การจัดเก็บข้อความในโหมดออฟไลน์อัตโนมัติ และการวิเคราะห์การจัดส่ง ซึ่งไม่มีใน APNs เพียงอย่างเดียว

สามารถส่งข้อความ FCM โดยไม่มีเซิร์ฟเวอร์ได้หรือไม่

ได้ ผ่าน Firebase Console ในส่วน Cloud Messaging สามารถส่งการแจ้งเตือนด้วยตนเองไปยังอุปกรณ์ หัวข้อ หรือกลุ่มผู้ชมที่เลือก ฟังก์ชันนี้เหมาะสำหรับการทดสอบและการส่งครั้งเดียว แต่ไม่สามารถแทนที่การผสานรวมกับเซิร์ฟเวอร์สำหรับแอปพลิเคชันในระดับ production

จะทำอย่างไรหากโทเคนอุปกรณ์เปลี่ยนไป

สมัครรับการอัปเดตโทเคนผ่าน onNewToken ใน FirebaseMessagingService (Android) หรือ MessagingDelegate (iOS) เมื่อโทเคนเปลี่ยน ให้ส่งโทเคนใหม่ไปยังเซิร์ฟเวอร์และลบโทเคนเก่า เซิร์ฟเวอร์ควรอัปเดตฐานข้อมูลและหยุดพยายามส่งไปยังโทเคนที่ล้าสมัย

FCM จัดการอุปกรณ์ออฟไลน์อย่างไร

FCM เก็บข้อความ ในคิวนานถึง 28 วันและส่งเมื่อมีการเชื่อมต่ออีกครั้ง สำหรับข้อความแจ้งเตือน ข้อความล่าสุดของแต่ละกลุ่มยุบ (collapse) เท่านั้นที่จะถูกเก็บ ส่วนข้อความข้อมูลจะถูกเก็บแยกต่างหากและส่งตามลำดับโดยไม่มีการยุบ

การใช้ Firebase Cloud Messaging มีค่าใช้จ่ายเท่าไร

FCM ฟรีโดยสมบูรณ์ ไม่มีข้อจำกัดด้านจำนวนข้อความ การใช้ FCM ไม่มีค่าใช้จ่ายทั้งในแผน Spark และแผน Blaze มีข้อจำกัดเฉพาะขนาด payload: สูงสุด 4 KB สำหรับข้อความแจ้งเตือนและสูงสุด 2 KB สำหรับข้อความข้อมูล

สรุป

  • Firebase Cloud Messaging คือบริการแจ้งเตือน push ข้ามแพลตฟอร์มจาก Google ที่รองรับ Android, iOS, Web และ Unity ผ่าน API เดียว
  • สถาปัตยกรรมของ FCM ประกอบด้วยเซิร์ฟเวอร์ผู้ให้บริการ โครงสร้างพื้นฐานของ Firebase และแอปพลิเคชันไคลเอนต์ ช่วยให้การส่งข้อความเชื่อถือได้ผ่านเครือข่ายทั่วโลกของ Google
  • ข้อความสามประเภท — notification (แสดงผลอัตโนมัติ), data (payload ที่กำหนดเองโดยไม่มี UI) และแบบผสม (ทั้งสองประเภทในข้อความเดียว)
  • FCM ใน Android ทำงานผ่าน FirebaseMessagingService พร้อมการเชื่อมต่อของตนเอง ส่วนใน iOS ใช้ APNs เป็นการขนส่งพร้อมการสกัดกั้นโทเคนผ่าน MessagingDelegate
  • HTTP v1 API แนะนำสำหรับการส่งจากเซิร์ฟเวอร์ด้วยการยืนยันตัวตน OAuth 2.0 ผ่าน Service Account และรองรับการวิเคราะห์การจัดส่ง
  • หัวข้อ (Topics) ช่วยให้ส่งข้อความไปยังกลุ่มผู้สมัคร และเงื่อนไข (conditions) ช่วยรวมหลายหัวข้อเพื่อการแบ่งกลุ่มที่แม่นยำ
  • FCM ฟรี ไม่มีข้อจำกัดด้านจำนวนข้อความ จัดเก็บข้อความออฟไลน์นานถึง 28 วัน และขนาด payload สูงสุด 4 KB

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม