FCM — คืออะไร, หลักการของ Firebase Cloud Messaging ในการพัฒนา

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

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

ประเด็นสำคัญ

  • FCM คือบริการข้ามแพลตฟอร์มของ Google สำหรับส่งการแจ้งเตือนแบบพุชและข้อมูล
  • สถาปัตยกรรม — ไคลเอ็นต์รับโทเคนการลงทะเบียน เซิร์ฟเวอร์ส่งข้อความผ่าน Firebase Connection Server
  • ประเภทข้อความ — notification (แสดงอัตโนมัติ) และ data (ประมวลผลเต็มในแอป)
  • การส่ง — FCM ใช้การเชื่อมต่อถาวรหรือคิวลำดับความสำคัญเพื่อรับประกันการส่ง
  • การรวม — การตั้งค่าผ่าน Firebase SDK, การกำหนดค่า google-services.json และการกำหนดค่าเซิร์ฟเวอร์

FCM คืออะไร?

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

FCM เลือกช่องทางการส่งที่เหมาะสมที่สุดโดยอัตโนมัติตามแพลตฟอร์ม: บน Android ใช้การเชื่อมต่อ FCM ของตัวเอง; บน iOS ใช้ APNS (ผ่านเกตเวย์ FCM) นักพัฒนาไม่จำเป็นต้องรวมสองระบบที่แตกต่างกัน — FCM จัดการการกำหนดเส้นทาง

บริการนี้มี REST API และ Admin SDK แบบรวมสำหรับการส่งข้อความ ช่วยให้สามารถส่งการแจ้งเตือนจากฝั่งเซิร์ฟเวอร์โดยไม่ถูกผูกติดกับแพลตฟอร์มผู้รับเฉพาะ

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

FCM รองรับโหมดการส่งหลายแบบ: ข้อความเดียว ไปยังอุปกรณ์เฉพาะ, การกระจายกลุ่ม ตามหัวข้อ และ การส่งแบบแบ่งส่วน ตามเงื่อนไข การส่งตามกำหนดเวลาและการทดสอบ A/B ของเนื้อหาการแจ้งเตือนก็สามารถทำได้เช่นกัน

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

สถาปัตยกรรม FCM ขึ้นอยู่กับสามองค์ประกอบ: แอปพลิเคชันไคลเอ็นต์, Firebase Connection Server และเซิร์ฟเวอร์แอป ไคลเอ็นต์ลงทะเบียนกับ FCM เมื่อเริ่มต้นและรับ โทเคนการลงทะเบียน ที่ไม่ซ้ำกัน — สตริงที่ระบุอุปกรณ์สำหรับแอปพลิเคชันนั้น

เซิร์ฟเวอร์แอปส่งคำขอไปยัง FCM REST API โดยระบุโทเคนผู้รับหรือหัวข้อ Firebase Connection Server ส่งข้อความโดยใช้การเชื่อมต่อ XMPP แบบถาวรหรือคำขอ HTTP หากอุปกรณ์ออฟไลน์ ข้อความจะถูกจัดคิวและส่งเมื่อการเชื่อมต่อกลับคืนมา

FCM รับประกันการส่งโดยใช้ คิวลำดับความสำคัญ และกลไกการยืนยัน บน Android ข้อความจะถูกเก็บไว้ในคิวสูงสุด 28 วัน; บน iOS สูงสุด 4 สัปดาห์ (ผ่าน APNS) หลังจากวันหมดอายุ ข้อความจะถูกลบโดยไม่มีการแจ้งเตือน

วงจรชีวิตของโทเคน FCM

โทเคนการลงทะเบียนสามารถเปลี่ยนแปลงได้ในหลายกรณี: เมื่อกู้คืนข้อมูลแอป, เมื่ออัปเดตเป็นเวอร์ชันใหม่ หรือเมื่อล้างแคช แอปต้องใช้ FirebaseMessagingService.onNewToken เพื่อจัดการการอัปเดตโทเคนและซิงค์กับเซิร์ฟเวอร์

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

FCM รองรับเพย์โหลดสองประเภท: notification และ data แต่ละประเภทกำหนดวิธีการและเวลาที่ข้อความถูกประมวลผลบนอุปกรณ์ผู้รับ

พารามิเตอร์NotificationData
แสดงอัตโนมัติใช่ ถ้าแอปอยู่ในพื้นหลังไม่ เฉพาะในแอป
การประมวลผลระบบ/NOS — ในพื้นหลัง; แอป — ในเบื้องหน้าในแอปเสมอ (onMessageReceived)
ขนาดสูงสุด4 KB4 KB
คีย์แบบกำหนดเองจำกัดเฉพาะฟิลด์ที่กำหนดไว้ล่วงหน้าคู่คีย์-ค่าใด ๆ
ต้องใช้ CollapseKeyไม่บังคับไม่บังคับสำหรับการจัดกลุ่ม

ในทางปฏิบัติ แนะนำให้ ใช้ข้อความ data เมื่อแอปต้องการประมวลผลการแจ้งเตือนแบบเต็มใน onMessageReceived ข้อความ notification เหมาะสำหรับสถานการณ์ง่าย ๆ ที่การแสดงผลของระบบเพียงพอ

FCM และ APNS: การเปรียบเทียบแนวทาง

FCM และ APNS เป็นบริการส่งพุชหลักสองบริการ FCM ทำหน้าที่เป็นเกตเวย์ข้ามแพลตฟอร์ม ในขณะที่ APNS มีไว้สำหรับระบบนิเวศของ Apple เท่านั้น ความแตกต่างหลักอยู่ที่สถาปัตยกรรม ข้อกำหนดใบรับรอง และกลไกการกำหนดเส้นทาง

  • ข้ามแพลตฟอร์ม — FCM รองรับ Android, iOS, Web; APNS รองรับเฉพาะ iOS, macOS, watchOS, tvOS
  • การยืนยันตัวตน — FCM ใช้ Server Key หรือ OAuth 2.0; APNS ใช้ใบรับรองหรือ Token-based (คีย์ p8)
  • ลำดับความสำคัญของข้อความ — FCM มี normal/high; APNS มี immediate/power-efficient consideration
  • หัวข้อ — FCM รองรับการสมัครสมาชิกหัวข้อโดยตรง; APNS ต้องใช้ตรรกะเซิร์ฟเวอร์

การเลือกระหว่าง FCM และ APNS โดยตรงขึ้นอยู่กับสถาปัตยกรรมโปรเจกต์ สำหรับแอปพลิเคชัน ข้ามแพลตฟอร์ม FCM เป็นตัวเลือกที่ดีที่สุด สำหรับโปรเจกต์ที่ใช้ iOS เท่านั้น การทำงานโดยตรงกับ APNS ผ่าน HTTP/2 API ก็สามารถทำได้

เมื่อใดควรเลือก FCM แทน APNS โดยตรง

FCM เหมาะสมเมื่อโปรเจกต์ใช้ทั้ง Android และ iOS พร้อมกัน รวมถึงเมื่อต้องการการวิเคราะห์ Firebase, การทดสอบ A/B ของการแจ้งเตือน หรือหัวข้อโดยไม่ต้องใช้ตรรกะเซิร์ฟเวอร์ APNS โดยตรงเหมาะสำหรับแอปพลิเคชันที่ใช้ iOS เท่านั้นที่มีการพึ่งพาน้อยที่สุดและข้อกำหนดด้านความหน่วงในการส่งที่เข้มงวด

การรวม FCM ใน Android

ในการเชื่อมต่อ FCM กับแอปพลิเคชัน Android คุณต้องเพิ่ม Firebase SDK และกำหนดค่า google-services.json ในรากของโปรเจกต์ หลังจากลงทะเบียนโทเคน แอปพลิเคชันก็พร้อมรับข้อความผ่าน FirebaseMessagingService

kotlin
// build.gradle (Module)
dependencies {
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}

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

class MyFirebaseMessagingService :
    FirebaseMessagingService() {

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

    override fun onMessageReceived(message: RemoteMessage) {
        message.notification?.let {
            showNotification(it.title, it.body)
        }
    }
}

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

การตั้งค่าช่องสัญญาณสำหรับการแจ้งเตือน FCM

บน Android 8+ ก่อนส่งการแจ้งเตือน FCM ด้วยการแสดงอัตโนมัติ คุณต้องสร้าง NotificationChannel ข้อความ notification ของ FCM ใช้ ID ช่องสัญญาณเริ่มต้น แต่แนะนำให้สร้างช่องสัญญาณแบบกำหนดเองผ่าน FirebaseMessagingService เมื่อได้รับข้อความแรก ข้อความ data ไม่ต้องการช่องสัญญาณ — แอปตัดสินใจเองว่าจะแสดงการแจ้งเตือนอย่างไรและเมื่อใด

การรวม FCM ใน iOS

บน iOS FCM ทำหน้าที่เป็นตัวกลางระหว่างเซิร์ฟเวอร์แอปและ APNS Firebase รับข้อความจากเซิร์ฟเวอร์ ห่อในรูปแบบ APNS และส่งผ่านเกตเวย์ของ Apple นักพัฒนาต้องกำหนดค่าคีย์หรือใบรับรอง APNS ในคอนโซล Firebase

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current().delegate = self

        Messaging.messaging().delegate = self
        return true
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        _ messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
    }
}

บน iOS การลงทะเบียน APNS เกิดขึ้นแบบอะซิงโครนัส FCM SDK จะได้รับโทเคน APNS โดยอัตโนมัติและส่งต่อไปยังเซิร์ฟเวอร์ Firebase didReceiveRegistrationToken จะถูกเรียกเมื่อได้รับโทเคน FCM ใหม่ ซึ่งรวมโทเคน APNS เข้ากับตัวระบุโปรเจกต์

การตรวจสอบสถานะการส่ง

FCM มีคอนโซล Firebase สำหรับตรวจสอบการส่ง: จำนวนการแจ้งเตือนที่ส่ง ได้รับ และแสดง นอกจากนี้ยังมี การเรียกกลับสถานะ ผ่าน Firebase Cloud Functions สำหรับติดตามข้อผิดพลาดในการส่งฝั่งเซิร์ฟเวอร์ ตัวชี้วัดสำคัญ: การแสดงผลและการเปิดการแจ้งเตือน

แนวทางปฏิบัติที่ดีที่สุดของ FCM

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

จัดการโทเคนแบบรวมศูนย์ จัดเก็บโทเคนปัจจุบันบนเซิร์ฟเวอร์ในตารางที่เชื่อมโยงกับผู้ใช้และแพลตฟอร์ม ใช้กลไก การล้างโทเคนที่ล้าสมัย: เมื่อพบข้อผิดพลาด NotRegistered หรือ InvalidRegistration ให้ลบโทเคนออกจากฐานข้อมูล โทเคนไม่ค่อยเปลี่ยนแปลง แต่การล้างโทเคนเป็นองค์ประกอบบังคับของการสนับสนุน FCM

ใช้คีย์ยุบ (collapseKey) สำหรับจัดกลุ่มข้อความ หากคุณกำลังส่งการแจ้งเตือนหลายรายการประเภทเดียวกัน (เช่น "อัปเดตอัตราแลกเปลี่ยน") ให้ตั้งค่า collapseKey เดียวกัน FCM จะส่งเฉพาะข้อความสุดท้ายจากกลุ่มเท่านั้น ซึ่งลดภาระอุปกรณ์และหลีกเลี่ยงการถล่มผู้ใช้ด้วยการแจ้งเตือน

ตรวจสอบการส่งผ่าน Firebase Console และ Cloud Functions การวิเคราะห์ FCM แสดงจำนวนการแจ้งเตือนที่ส่ง ได้รับ และแสดง หากอัตราการแสดงต่ำกว่า 70% ให้ตรวจสอบการตั้งค่าช่องสัญญาณบน Android และการตั้งค่าสิทธิ์บน iOS การส่งต่ำมักเกี่ยวข้องกับช่องสัญญาณที่ปิดใช้งานหรือการห้ามการแจ้งเตือน ประการที่ห้า: ใช้การทดสอบ A/B ของ Firebase เพื่อปรับข้อความการแจ้งเตือนและเวลาในการส่งให้เหมาะสม — ซึ่งเพิ่มอัตราการเปิดได้ 15–25% ตามข้อมูลของ Firebase

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

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

FCM คือการอัปเดตเชิงวิวัฒนาการของ GCM (Google Cloud Messaging) FCM มีการตั้งค่าที่ง่ายขึ้นผ่าน Firebase Console การวิเคราะห์ในตัว หัวข้อ และการรองรับ Web Push GCM ถูกยกเลิกอย่างเป็นทางการตั้งแต่เมษายน 2019 และโปรเจกต์ทั้งหมดต้องย้ายไปใช้ FCM

สามารถส่งข้อความผ่าน FCM ได้ฟรีกี่ข้อความ?

Firebase Cloud Messaging เป็นบริการ ฟรี ไม่มีข้อจำกัดด้านจำนวนข้อความ การชำระเงินจะคิดเฉพาะเมื่อใช้บริการ Firebase อื่น ๆ เช่น Cloud Functions หรือ Firestore FCM ไม่ต้องสมัครสมาชิก Spark หรือ Blaze สำหรับการส่งการแจ้งเตือนพื้นฐาน

ทำไมโทเคน FCM ถึงเปลี่ยนแปลงได้?

โทเคน FCM เปลี่ยนแปลงเมื่อ: กู้คืนแอปจากการสำรองข้อมูล, ล้างข้อมูลแอป, ติดตั้งใหม่, อัปเดตเป็นเวอร์ชันใหม่ที่มีการเปลี่ยน Sender ID จัดการ onNewToken ใน FirebaseMessagingService เสมอเพื่อส่งโทเคนใหม่ไปยังเซิร์ฟเวอร์

FCM ทำงานในจีนหรือไม่?

FCM ของ Google ถูก บล็อก ในจีน สำหรับการส่งการแจ้งเตือนในจีน จะใช้บริการทางเลือก: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push สำหรับการส่งข้ามแพลตฟอร์ม จะใช้บริการหลายผู้ให้บริการอย่าง Getui

จะตรวจสอบว่า FCM กำหนดค่าอย่างถูกต้องได้อย่างไร?

ใช้คอนโซล Firebase ในตัว: เลือก "Cloud Messaging" — "Send Test Message" ป้อน โทเคนทดสอบ และส่งข้อความ notification การแจ้งเตือนควรปรากฏบนอุปกรณ์ คุณยังสามารถตรวจสอบบันทึก FirebaseMessagingService.onMessageReceived

สรุป

  • FCM คือบริการคลาวด์ข้ามแพลตฟอร์มของ Google สำหรับส่งการแจ้งเตือนแบบพุชและข้อมูล
  • โทเคน คือตัวระบุอุปกรณ์ที่ไม่ซ้ำกันซึ่งใช้สำหรับการส่งข้อความแบบกำหนดเป้าหมาย
  • Notification คือประเภทข้อความที่ระบบแสดงอัตโนมัติในโหมดพื้นหลัง
  • Data คือประเภทข้อความที่มีเพย์โหลดเต็มประมวลผลเฉพาะภายในแอป
  • หัวข้อ คือกลไกการกระจายกลุ่มตามการสมัครสมาชิกหัวข้อโดยไม่ต้องเก็บโทเคนบนเซิร์ฟเวอร์
  • เกตเวย์ APNS — สำหรับ iOS FCM ทำหน้าที่เป็นตัวกลาง ส่งต่อข้อความผ่าน APNS
  • ฟรี — FCM ไม่คิดค่าธรรมเนียมตามจำนวนข้อความที่ส่ง

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

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

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

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