Firebase Cloud Messaging (FCM) มีตัวเลือกและความสามารถด้านการรับส่งข้อความที่หลากหลาย ข้อมูลในหน้านี้มีไว้เพื่อช่วยให้คุณเข้าใจFCMข้อความประเภทต่างๆ และสิ่งที่คุณสามารถทํากับข้อความเหล่านั้น
ประเภทข้อความ
FCM ช่วยให้คุณส่งข้อความ 2 ประเภทถึงลูกค้าได้ ดังนี้
- ข้อความแจ้งเตือน ซึ่งบางครั้งเรียกว่า "ข้อความแสดงผล" FCM SDK จะจัดการรายการเหล่านี้โดยอัตโนมัติ
- ข้อความข้อมูลซึ่งแอปไคลเอ็นต์จัดการ
ข้อความแจ้งเตือนประกอบด้วยชุดคีย์ที่ผู้ใช้มองเห็นซึ่งกําหนดไว้ล่วงหน้า ในทางตรงกันข้าม ข้อความข้อมูลจะมีเฉพาะคู่คีย์-ค่าที่กำหนดเองโดยผู้ใช้เท่านั้น ข้อความแจ้งเตือนอาจมีเพย์โหลด ข้อมูลที่ไม่บังคับได้ เพย์โหลดสูงสุดสำหรับข้อความทั้ง 2 ประเภทคือ 4096 ไบต์ ยกเว้นเมื่อส่งข้อความจากคอนโซล Firebase ซึ่งจะบังคับใช้ขีดจำกัด 1,000 อักขระ
สถานการณ์การใช้งาน | วิธีส่ง | |
---|---|---|
ข้อความแจ้งเตือน | SDK ของ FCM จะแสดงข้อความไปยังอุปกรณ์ของผู้ใช้ปลายทางในนามของแอปไคลเอ็นต์เมื่อแอปทำงานในพื้นหลัง หรือหากแอปทำงานอยู่เบื้องหน้าเมื่อได้รับการแจ้งเตือน รหัสของแอปจะเป็นตัวกำหนดลักษณะการทำงาน ข้อความการแจ้งเตือนจะมีชุดคีย์ที่ผู้ใช้มองเห็นซึ่งกําหนดไว้ล่วงหน้าและเพย์โหลดข้อมูลที่เลือกได้ของคู่คีย์-ค่าที่กําหนดเอง |
|
ข้อความข้อมูล | แอปไคลเอ็นต์มีหน้าที่ประมวลผลข้อความข้อมูล ข้อความข้อมูลมีเฉพาะคู่คีย์-ค่าที่กำหนดเองซึ่งไม่มีชื่อคีย์ที่สงวนไว้ (ดูด้านล่าง) | ในสภาพแวดล้อมที่เชื่อถือได้ เช่น
Cloud Functions
หรือเซิร์ฟเวอร์แอปของคุณ ให้ใช้
Admin SDK หรือ
โปรโตคอลเซิร์ฟเวอร์ FCM ในคำขอส่ง ให้ตั้งค่าคีย์ data
|
ใช้ข้อความแจ้งเตือนเมื่อคุณต้องการให้ SDK ของ FCM จัดการการแสดง การแจ้งเตือนโดยอัตโนมัติเมื่อแอปทำงานอยู่เบื้องหลัง ใช้ข้อความข้อมูลเมื่อคุณต้องการประมวลผลข้อความด้วยโค้ดแอปไคลเอ็นต์ของคุณเอง
FCM สามารถส่งข้อความแจ้งเตือนพร้อมเพย์โหลดข้อมูล (ไม่บังคับ) ในกรณีเช่นนี้ FCM จะจัดการการแสดงเพย์โหลดการแจ้งเตือน และแอปไคลเอ็นต์จะจัดการเพย์โหลดข้อมูล
ข้อความแจ้งเตือน
คุณสามารถส่งข้อความการแจ้งเตือนโดยใช้Firebaseคอนโซลสําหรับการทดสอบ การตลาด และการดึงดูดผู้ใช้ให้กลับมามีส่วนร่วมอีกครั้ง Firebase Console มีการทดสอบ A/B ที่อิงตามข้อมูลวิเคราะห์เพื่อช่วยคุณปรับแต่งและปรับปรุงข้อความการตลาด
หากต้องการส่งข้อความแจ้งเตือนทางโปรแกรมโดยใช้ Admin SDK หรือโปรโตคอล FCM ให้ตั้งค่าคีย์ notification
ด้วยชุดตัวเลือกคีย์-ค่าที่กำหนดไว้แล้วที่จำเป็นสำหรับส่วนที่ผู้ใช้เห็นในข้อความแจ้งเตือน ตัวอย่างเช่น ต่อไปนี้คือข้อความการแจ้งเตือนในรูปแบบ JSON ในแอป IM โดยผู้ใช้จะเห็นข้อความที่มีชื่อ "โปรตุเกส vs เดนมาร์ก" และข้อความ "การแข่งขันยอดเยี่ยม" บนอุปกรณ์
{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Portugal vs. Denmark", "body":"great match!" } } }
ระบบจะส่งข้อความการแจ้งเตือนไปยังถาดการแจ้งเตือนเมื่อแอปอยู่เบื้องหลัง สําหรับแอปที่ทำงานอยู่เบื้องหน้า ข้อความจะได้รับการจัดการโดยฟังก์ชัน Callback
ดูรายการคีย์ที่กำหนดไว้ล่วงหน้าทั้งหมดที่ใช้สร้างข้อความการแจ้งเตือนได้จากเอกสารอ้างอิงออบเจ็กต์การแจ้งเตือนของโปรโตคอล HTTP v1
ข้อความเกี่ยวกับอินเทอร์เน็ต
ตั้งค่าคีย์ที่เหมาะสมกับคู่คีย์-ค่าที่กำหนดเองเพื่อส่งเพย์โหลดข้อมูลไปยังแอปไคลเอ็นต์
ตัวอย่างเช่น นี่คือตัวอย่างข้อความในรูปแบบ JSON ในแอป IM เดียวกันกับด้านบน ซึ่งข้อมูลจะรวมอยู่ในคีย์ data
ทั่วไป และคาดว่าแอปไคลเอ็นต์จะตีความเนื้อหา
{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "data":{ "Nick" : "Mario", "body" : "great match!", "Room" : "PortugalVSDenmark" } } }
ตัวอย่างข้างต้นแสดงการใช้ช่อง data
ระดับบนสุดหรือทั่วไป ซึ่งไคลเอ็นต์ในทุกแพลตฟอร์มที่รับข้อความจะตีความ
ในแอปแต่ละแพลตฟอร์ม แอปไคลเอ็นต์จะได้รับเพย์โหลดข้อมูลในฟังก์ชันการเรียกกลับ
การเข้ารหัสสำหรับข้อความข้อมูล
เลเยอร์การขนส่งของ Android (ดูสถาปัตยกรรม FCM) ใช้การเข้ารหัสจากต้นทางถึงปลายทาง คุณอาจเลือกเพิ่มการเข้ารหัสจากต้นทางถึงปลายทางในข้อความผ่านอินเทอร์เน็ต ทั้งนี้ขึ้นอยู่กับความต้องการ FCM ไม่ได้ให้บริการโซลูชันจากต้นทางถึงปลายทาง อย่างไรก็ตาม มีโซลูชันภายนอก เช่น Caplary หรือ DTLS
ข้อความการแจ้งเตือนที่มีเพย์โหลดข้อมูล (ไม่บังคับ)
คุณจะส่งข้อความแจ้งเตือนที่มีเพย์โหลดของคู่คีย์-ค่าที่กำหนดเองได้ทั้งแบบแบบเป็นโปรแกรมหรือผ่านคอนโซล Firebase ในเครื่องมือเขียนข้อความแจ้ง ให้ใช้ช่องข้อมูลที่กำหนดเองในตัวเลือกขั้นสูง
ลักษณะการทํางานของแอปเมื่อได้รับข้อความที่มีทั้งแพ็กเกจการแจ้งเตือนและข้อมูลจะขึ้นอยู่กับว่าแอปทำงานอยู่เบื้องหลังหรือเบื้องหน้า ซึ่งก็คือแอปทำงานอยู่หรือไม่ ณ เวลาที่รับ
- เมื่ออยู่ในเบื้องหลัง แอปจะได้รับเพย์โหลดการแจ้งเตือนในถาดการแจ้งเตือน และจัดการเพย์โหลดข้อมูลเมื่อผู้ใช้แตะการแจ้งเตือนเท่านั้น
- เมื่อทำงานอยู่เบื้องหน้า แอปของคุณจะได้รับออบเจ็กต์ข้อความที่มีทั้งเพย์โหลด
ต่อไปนี้เป็นข้อความรูปแบบ JSON ที่มีทั้งคีย์ notification
และคีย์ data
{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Portugal vs. Denmark", "body":"great match!" }, "data" : { "Nick" : "Mario", "Room" : "PortugalVSDenmark" } } }
การปรับแต่งข้อความในแพลตฟอร์มต่างๆ
ทั้ง Firebase Admin SDK และโปรโตคอล HTTP v1 ของ FCM v1 จะอนุญาตให้คำขอส่งข้อความตั้งค่าช่องทั้งหมดที่มีอยู่ในออบเจ็กต์ message
ซึ่งรวมถึงเนื้อหาต่อไปนี้
- ชุดช่องทั่วไปที่จะตีความโดยอินสแตนซ์แอปทั้งหมดที่ได้รับข้อความ
- ชุดช่องเฉพาะแพลตฟอร์ม เช่น
AndroidConfig
และWebpushConfig
จะตีความโดยอินสแตนซ์แอปที่ทํางานบนแพลตฟอร์มที่ระบุเท่านั้น
การบล็อกเฉพาะแพลตฟอร์มช่วยให้คุณปรับแต่งข้อความสำหรับแพลตฟอร์มต่างๆ ได้อย่างยืดหยุ่นเพื่อให้จัดการได้อย่างถูกต้องเมื่อได้รับ แบ็กเอนด์ FCM จะพิจารณาพารามิเตอร์ที่ระบุทั้งหมดและปรับแต่งข้อความสำหรับแต่ละแพลตฟอร์ม
กรณีที่ควรใช้ช่องทั่วไป
ใช้ฟิลด์ทั่วไปเมื่อคุณทำสิ่งต่อไปนี้
- กําหนดเป้าหมายอินสแตนซ์แอปในแพลตฟอร์มทั้งหมด ได้แก่ Apple, Android และเว็บ
- การส่งข้อความไปยังหัวข้อ
อินสแตนซ์ของแอปทั้งหมดไม่ว่าจะเป็นแพลตฟอร์มใดจะตีความช่องทั่วไปต่อไปนี้ได้
กรณีที่ควรใช้ช่องเฉพาะแพลตฟอร์ม
ใช้ช่องเฉพาะแพลตฟอร์มเมื่อคุณต้องการทำสิ่งต่อไปนี้
- ส่งช่องไปยังบางแพลตฟอร์มเท่านั้น
- ส่งช่องเฉพาะแพลตฟอร์มนอกเหนือจากช่องทั่วไป
เมื่อใดก็ตามที่คุณต้องการส่งค่าไปยังแพลตฟอร์มที่เฉพาะเจาะจงเท่านั้น อย่าใช้ฟิลด์ทั่วไป แต่ให้ใช้ฟิลด์เฉพาะแพลตฟอร์ม เช่น หากต้องการส่งการแจ้งเตือนไปยังแพลตฟอร์มและเว็บของ Apple เท่านั้น แต่ไม่ส่งไปยัง Android คุณต้องใช้ช่อง 2 ชุดแยกกัน ได้แก่ ช่องสำหรับ Apple และช่องสำหรับเว็บ
เมื่อคุณส่งข้อความที่มีตัวเลือกการส่งที่เฉพาะเจาะจง ให้ใช้ฟิลด์เฉพาะแพลตฟอร์มในการตั้งค่า คุณสามารถระบุค่าที่แตกต่างกันในแต่ละแพลตฟอร์มได้หากต้องการ อย่างไรก็ตาม แม้ว่าคุณจะต้องการกำหนดค่าเดียวกันในทุกแพลตฟอร์ม คุณต้องใช้ช่องเฉพาะแพลตฟอร์ม เนื่องจากแต่ละแพลตฟอร์มอาจตีความค่านี้แตกต่างกันเล็กน้อย เช่น Android จะตั้งค่าการคงอยู่เป็นเวลาหมดอายุเป็นวินาที ส่วน Apple จะตั้งค่าเป็นวันที่หมดอายุ
ตัวอย่าง: ข้อความแจ้งเตือนที่มีตัวเลือกการแสดงผลสำหรับแพลตฟอร์มที่เฉพาะเจาะจง
คําขอส่ง v1 ต่อไปนี้จะส่งชื่อและเนื้อหาการแจ้งเตือนทั่วไปไปยังทุกแพลตฟอร์ม รวมถึงส่งการลบล้างเฉพาะบางแพลตฟอร์มด้วย กล่าวโดยละเอียดคือ คำขอต้องมีลักษณะดังนี้
- ตั้งค่าการคงอยู่เป็นเวลานานสําหรับแพลตฟอร์ม Android และเว็บ ขณะที่ตั้งค่าลําดับความสําคัญของข้อความ APN (แพลตฟอร์ม Apple) เป็นการตั้งค่าต่ำ
- ตั้งค่าคีย์ที่เหมาะสมเพื่อกำหนดผลลัพธ์ของการแตะการแจ้งเตือนของผู้ใช้บน Android และ Apple ซึ่งได้แก่
click_action
และcategory
ตามลำดับ
{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Match update", "body":"Arsenal goal in added time, score is now 3-0" }, "android":{ "ttl":"86400s", "notification"{ "click_action":"OPEN_ACTIVITY_1" } }, "apns": { "headers": { "apns-priority": "5", }, "payload": { "aps": { "category": "NEW_MESSAGE_CATEGORY" } } }, "webpush":{ "headers":{ "TTL":"86400" } } } }
ดูรายละเอียดทั้งหมดเกี่ยวกับคีย์ที่ใช้ได้ในบล็อกเฉพาะแพลตฟอร์มในเนื้อหาข้อความได้ที่เอกสารอ้างอิง HTTP v1 ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคำขอส่งที่มีเนื้อหาข้อความได้ที่สร้างคำขอส่งคำขอ
ตัวเลือกการจัดส่ง
FCM จะมีตัวเลือกการนำส่งชุดหนึ่งสำหรับข้อความที่ส่งไปยังอุปกรณ์ Android และช่วยให้มีตัวเลือกที่คล้ายกันในแพลตฟอร์มและเว็บของ Apple ตัวอย่างเช่น ลักษณะการทํางานของข้อความที่ "ยุบได้" จะรองรับใน Android ผ่าน collapse_key
ของ FCM, ใน Apple ผ่าน apns-collapse-id
และใน JavaScript/เว็บผ่าน Topic
โปรดดูรายละเอียดจากคำอธิบายในส่วนนี้และเอกสารอ้างอิงที่เกี่ยวข้อง
ข้อความที่ยุบไม่ได้และยุบได้
ข้อความที่ยุบไม่ได้หมายความว่าระบบนำส่งข้อความแต่ละรายการไปยังอุปกรณ์แล้ว ข้อความแบบไม่สามารถยุบได้จะแสดงเนื้อหาที่มีประโยชน์บางอย่าง ต่างจากข้อความแบบยุบได้ เช่น "การ ping" ที่ไม่มีเนื้อหาเพื่อส่งแอปบนอุปกรณ์เคลื่อนที่ให้ติดต่อเซิร์ฟเวอร์เพื่อดึงข้อมูล
กรณีการใช้งานข้อความที่ยุบไม่ได้โดยทั่วไปคือข้อความแชทหรือข้อความสำคัญ เช่น ในแอป IM คุณจะต้องนำส่งทุกข้อความ เนื่องจากข้อความแต่ละข้อความมีเนื้อหาแตกต่างกัน
สำหรับ Android ระบบจะจำกัดจำนวนข้อความที่เก็บได้ไว้ที่ 100 ข้อความโดยไม่ยุบ หากถึงขีดจำกัด ระบบจะทิ้งข้อความที่เก็บไว้ทั้งหมด เมื่ออุปกรณ์กลับมาออนไลน์อีกครั้ง อุปกรณ์จะได้รับข้อความพิเศษที่ระบุว่าถึงขีดจำกัดแล้ว จากนั้นแอปจะจัดการสถานการณ์ได้อย่างเหมาะสม โดยปกติแล้วคือจะขอการซิงค์แบบเต็มจากเซิร์ฟเวอร์แอป
ข้อความที่ยุบได้คือข้อความที่อาจแทนที่ด้วยข้อความใหม่หากยังไม่ได้ส่งไปยังอุปกรณ์
กรณีการใช้งานที่พบบ่อยของข้อความแบบยุบได้คือข้อความที่ใช้บอกแอปบนอุปกรณ์เคลื่อนที่ให้ซิงค์ข้อมูลจากเซิร์ฟเวอร์ เช่น แอปกีฬาที่อัปเดตคะแนนล่าสุดให้แก่ผู้ใช้ มีเพียงข้อความล่าสุดเท่านั้นที่มีความเกี่ยวข้อง
หากต้องการทําเครื่องหมายข้อความให้ยุบได้ใน Android ให้ใส่พารามิเตอร์ collapse_key
ในเพย์โหลดข้อความ โดยค่าเริ่มต้น คีย์การยุบจะเป็นชื่อแพ็กเกจแอปที่ลงทะเบียนในคอนโซล Firebase เซิร์ฟเวอร์ FCM เก็บข้อความที่ยุบได้ 4 ข้อความที่แตกต่างกันต่ออุปกรณ์ 1 เครื่องพร้อมกันได้ โดยแต่ละข้อความจะมีคีย์ยุบที่ต่างกัน หากมีจำนวนมากกว่านี้ FCM จะเก็บคีย์การยุบไว้เพียง 4 รายการเท่านั้น โดยไม่มีการรับประกันว่าระบบจะเก็บคีย์ใดไว้
ข้อความหัวข้อที่ไม่มีเพย์โหลดจะยุบได้โดยค่าเริ่มต้น ข้อความแจ้งเตือนจะยุบได้เสมอและจะไม่สนใจพารามิเตอร์ collapse_key
ฉันควรใช้รูปแบบใด
ข้อความแบบยุบได้ถือเป็นตัวเลือกที่ดีกว่าในแง่ประสิทธิภาพ ตราบใดที่แอปไม่จำเป็นต้องใช้ข้อความแบบยุบไม่ได้ อย่างไรก็ตาม หากคุณใช้ข้อความแบบยุบได้ โปรดทราบว่า FCM อนุญาตให้ใช้คีย์การยุบที่แตกต่างกันได้สูงสุด 4 คีย์เท่านั้น โดย FCM ต่อโทเค็นการลงทะเบียน 1 รายการ ณ เวลาหนึ่งๆ คุณต้องไม่เกินจํานวนนี้ มิฉะนั้นจะก่อให้เกิดผลกระทบที่คาดการณ์ไม่ได้
สถานการณ์การใช้งาน | วิธีส่ง | |
---|---|---|
ยุบไม่ได้ | ข้อความทุกข้อความมีความสำคัญต่อแอปไคลเอ็นต์และต้องได้รับการนำส่ง | ข้อความทั้งหมดจะยุบไม่ได้โดยค่าเริ่มต้น ยกเว้นข้อความแจ้งเตือน |
พับได้ | เมื่อมีข้อความใหม่ซึ่งแสดงผลข้อความเก่าที่เกี่ยวข้องซึ่งไม่เกี่ยวข้องกับแอปไคลเอ็นต์ FCM จะแทนที่ข้อความเก่า เช่น ข้อความที่ใช้เพื่อเริ่มการซิงค์ข้อมูลจากเซิร์ฟเวอร์ หรือข้อความแจ้งเตือนที่ล้าสมัย | ตั้งค่าพารามิเตอร์ที่เหมาะสมในคำขอข้อความ ดังนี้
|
การตั้งค่าลำดับความสำคัญของข้อความ
คุณมี 2 ตัวเลือกในการกำหนดลำดับความสำคัญของการนำส่งให้กับข้อความดาวน์สตรีม ได้แก่ ลำดับความสำคัญสูงและปกติ แม้ว่าลักษณะการทำงานจะต่างกันเล็กน้อยในแพลตฟอร์มต่างๆ แต่การส่งข้อความปกติและข้อความที่มีลำดับความสำคัญสูงจะมีลักษณะดังนี้
ลําดับความสําคัญตามปกติ ระบบจะส่งข้อความที่มีลำดับความสำคัญปกติทันทีเมื่อแอปทำงานอยู่เบื้องหน้า สำหรับแอปที่ทำงานอยู่เบื้องหลัง การส่งอาจล่าช้า สำหรับข้อความที่ไม่จําเป็นต้องส่งโดยเร็ว เช่น การแจ้งเตือนอีเมลใหม่ การรักษา UI ให้ซิงค์กัน หรือซิงค์ข้อมูลแอปในเบื้องหลัง ให้เลือกลําดับความสําคัญของการนำส่งแบบปกติ
สำคัญมาก FCM จะพยายามส่งข้อความที่มีลำดับความสำคัญสูงทันทีแม้ว่าอุปกรณ์จะอยู่ในโหมด Doze ก็ตาม ข้อความที่มีลําดับความสําคัญสูงมีไว้สําหรับเนื้อหาที่ผู้ใช้มองเห็นและมีความจําเป็นเร่งด่วน
ต่อไปนี้คือตัวอย่างข้อความที่มีลําดับความสําคัญเป็นปกติซึ่งส่งผ่านโปรโตคอล FCM HTTP v1 เพื่อแจ้งให้สมาชิกนิตยสารทราบว่ามีเนื้อหาใหม่ให้ดาวน์โหลด
{ "message":{ "topic":"subscriber-updates", "notification":{ "body" : "This week's edition is now available.", "title" : "NewsMagazine.com", }, "data" : { "volume" : "3.21.15", "contents" : "http://www.news-magazine.com/world-week/21659772" }, "android":{ "priority":"normal" }, "apns":{ "headers":{ "apns-priority":"5" } }, "webpush": { "headers": { "Urgency": "high" } } } }
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าลําดับความสําคัญของข้อความตามแพลตฟอร์มได้ดังนี้
- เอกสารประกอบเกี่ยวกับ APN
- ตั้งค่าและจัดการลำดับความสำคัญของข้อความ (Android)
- ความเร่งด่วนของข้อความพุชบนเว็บ
กรณีการใช้งานที่สำคัญต่อชีวิต
FCM API ไม่ได้ออกแบบมาสำหรับการแจ้งเตือนเหตุฉุกเฉินหรือกิจกรรมที่มีความเสี่ยงสูงอื่นๆ ซึ่งการใช้งานหรือความล้มเหลวของ API อาจทำให้มีผู้เสียชีวิต การบาดเจ็บส่วนบุคคล หรือความเสียหายต่อสิ่งแวดล้อม (เช่น ปฏิบัติการของหน่วยงานพลังงานนิวเคลียร์ การควบคุมการจราจรทางอากาศ หรือระบบช่วยชีวิต) การใช้งานดังกล่าวเป็นสิ่งต้องห้ามอย่างชัดแจ้งภายใต้ส่วนที่ 4. ก. 7 ของข้อกำหนดในการให้บริการ คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการจัดการการปฏิบัติตามข้อกำหนดของแอป รวมถึงความเสียหายใดๆ ที่เกิดจากการไม่ปฏิบัติตามข้อกำหนด Google ให้บริการ API "ตามที่เป็นอยู่" และสงวนสิทธิ์ในการปิดให้บริการ API หรือส่วนใดส่วนหนึ่งหรือฟีเจอร์ หรือการเข้าถึง API ดังกล่าวไม่ว่าด้วยเหตุผลใดก็ตามและเมื่อใดก็ได้ โดยไม่มีความรับผิดหรือภาระหน้าที่อื่นๆ ต่อคุณหรือผู้ใช้
การตั้งค่าอายุการใช้งานของข้อความ
FCM มักจะนำส่งข้อความทันทีหลังจากที่ส่ง อย่างไรก็ตาม การดำเนินการนี้อาจไม่สามารถทำได้เสมอไป เช่น หากแพลตฟอร์มเป็น Android อุปกรณ์อาจปิดอยู่ ออฟไลน์ หรือใช้งานไม่ได้ หรือ FCM อาจจงใจเลื่อนข้อความออกไปเพื่อไม่ให้แอปใช้ทรัพยากรมากเกินไปและส่งผลเสียต่ออายุการใช้งานแบตเตอรี่
ในกรณีนี้ FCM จะจัดเก็บข้อความและส่งทันทีที่เป็นไปได้ แม้ว่าในกรณีส่วนใหญ่จะไม่เป็นปัญหา แต่ก็มีบางแอปที่ข้อความที่ส่งช้าอาจไม่ได้รับการนําส่งเลย ตัวอย่างเช่น หากข้อความเป็นการแจ้งเตือนสายเรียกเข้าหรือวิดีโอคอล ข้อความดังกล่าวจะมีความหมายเพียงช่วงสั้นๆ ก่อนการโทรจะสิ้นสุดลง หรือหากข้อความเป็นคำเชิญให้เข้าร่วมกิจกรรม ข้อความดังกล่าวจะไร้ประโยชน์หากได้รับหลังจากกิจกรรมสิ้นสุดลง
คุณระบุอายุการใช้งานสูงสุดของข้อความได้ใน Android และเว็บ/JavaScript ค่าต้องเป็นระยะเวลาตั้งแต่ 0 ถึง 2,419,200 วินาที (28 วัน) และสอดคล้องกับระยะเวลาสูงสุดที่ FCM จัดเก็บและพยายามส่งข้อความ คำขอที่ไม่มีช่องนี้จะมีค่าเริ่มต้นเป็นระยะเวลาสูงสุด 4 สัปดาห์
ตัวอย่างการใช้งานฟีเจอร์นี้ ได้แก่
- สายเรียกเข้าของวิดีโอแชท
- กิจกรรมคำเชิญที่กำลังจะหมดอายุ
- กิจกรรมในปฏิทิน
ข้อดีอีกประการหนึ่งในการระบุอายุของข้อความคือ FCM จะไม่จำกัดปริมาณข้อความแบบยุบได้สำหรับข้อความที่มีค่าการอยู่รอด 0 วินาที
FCM พยายามอย่างดีที่สุดในการจัดการข้อความที่ต้องส่ง "ตอนนี้หรือไม่มีวันส่ง" โปรดทราบว่าค่า time_to_live
ที่ 0 หมายความว่าระบบจะทิ้งข้อความที่ไม่สามารถส่งได้ทันที อย่างไรก็ตาม เนื่องจากข้อความดังกล่าวจะไม่มีการจัดเก็บ จึงเป็นการหน่วงเวลาที่ดีที่สุดสำหรับการส่งข้อความการแจ้งเตือน
ต่อไปนี้เป็นตัวอย่างของคำขอที่มี TTL:
{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "data":{ "Nick" : "Mario", "body" : "great match!", "Room" : "PortugalVSDenmark" }, "apns":{ "headers":{ "apns-expiration":"1604750400" } }, "android":{ "ttl":"4500s" }, "webpush":{ "headers":{ "TTL":"4500" } } } }
อายุการใช้งานของข้อความ
เมื่อเซิร์ฟเวอร์แอปโพสต์ข้อความไปยัง FCM และได้รับรหัสข้อความกลับ ก็ไม่ได้หมายความว่าข้อความได้รับการนำส่งไปยังอุปกรณ์แล้ว แต่หมายความว่าระบบยอมรับการนำส่งแล้ว สิ่งที่เกิดขึ้นกับข้อความหลังจากที่ระบบยอมรับจะขึ้นอยู่กับหลายปัจจัย
ในกรณีที่ดีที่สุด หากอุปกรณ์เชื่อมต่อกับ FCM, หน้าจอเปิดอยู่ และไม่มีข้อจำกัดการจำกัดความเร็ว ระบบจะส่งข้อความทันที
หากอุปกรณ์เชื่อมต่ออยู่แต่อยู่ใน Doze ข้อความที่มีลำดับความสำคัญต่ำจะจัดเก็บโดย FCM จนกว่าอุปกรณ์จะออกจาก Doze ด้วยเหตุนี้ FLAG collapse_key
จึงมีบทบาทสำคัญ หากมีข้อความที่มีคีย์การยุบ (และโทเค็นการลงทะเบียน) เดียวกันซึ่งจัดเก็บไว้แล้วและรอการส่ง ระบบจะทิ้งข้อความเก่าและแทนที่ด้วยข้อความใหม่ (กล่าวคือ ข้อความใหม่จะยุบข้อความเก่า) อย่างไรก็ตาม หากไม่ได้ตั้งค่าคีย์การยุบ ระบบจะจัดเก็บทั้งข้อความใหม่และข้อความเก่าไว้เพื่อนำส่งในอนาคต
หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM ระบบจะจัดเก็บข้อความไว้จนกว่าจะสร้างการเชื่อมต่อ (โดยยังคงเป็นไปตามกฎของคีย์การยุบ) เมื่อเชื่อมต่อแล้ว FCM จะส่งข้อความที่รอทั้งหมดไปยังอุปกรณ์ หากอุปกรณ์ไม่เชื่อมต่ออีกเลย (เช่น มีการรีเซ็ตเป็นค่าเริ่มต้น) ข้อความจะหมดเวลาและถูกทิ้งออกจากพื้นที่เก็บข้อมูล FCM ระยะหมดเวลาเริ่มต้นคือ 4 สัปดาห์ เว้นแต่จะมีการตั้งค่า Flag time_to_live
วิธีดูข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการนำส่งข้อความ
หากต้องการดูข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการนำส่งข้อความบนแพลตฟอร์ม Android หรือ Apple โปรดดูหน้าแดชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดในอุปกรณ์ Apple และ Android รวมถึงข้อมูล "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สําหรับแอป Android
สำหรับอุปกรณ์ Android ที่เปิดใช้การรับส่งข้อความในช่องทางโดยตรง หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM เป็นเวลานานกว่า 1 เดือน FCM จะยังคงยอมรับข้อความแต่จะยกเลิกข้อความทันที หากอุปกรณ์เชื่อมต่อภายใน 4 สัปดาห์นับจากข้อความข้อมูลล่าสุดที่คุณส่งไป ลูกค้าจะได้รับการเรียกกลับ onDeletedMessages() จากนั้นแอปจะจัดการสถานการณ์ได้อย่างเหมาะสม โดยปกติแล้วคือจะขอการซิงค์แบบเต็มจากเซิร์ฟเวอร์แอป
สุดท้าย เมื่อ FCM พยายามส่งข้อความไปยังอุปกรณ์และมีการถอนการติดตั้งแอป FCM จะทิ้งข้อความนั้นทันทีและทำให้โทเค็นการลงทะเบียนใช้งานไม่ได้ การพยายามส่งข้อความไปยังอุปกรณ์ดังกล่าวในอนาคตจะทำให้เกิดข้อผิดพลาด NotRegistered
การควบคุมและโควต้า
เป้าหมายของเราคือการส่งข้อความทุกข้อความที่ส่งผ่าน FCM เสมอ อย่างไรก็ตาม การส่งข้อความทุกข้อความอาจทำให้ผู้ใช้ได้รับประสบการณ์โดยรวมที่ไม่ดี ในกรณีอื่นๆ เราต้องกำหนดขอบเขตเพื่อให้ FCM ให้บริการที่ปรับขนาดได้สำหรับผู้ส่งทุกคน ประเภทของขีดจํากัดและโควต้าที่อธิบายในส่วนนี้ช่วยให้เรารักษาสมดุลของปัจจัยสําคัญเหล่านี้ได้
การควบคุมการรับส่งข้อความขาลง
HTTP v1 API เปิดตัวโควต้าต่อโปรเจ็กต์ต่อนาทีสำหรับการรับส่งข้อความดาวน์สตรีม โควต้าเริ่มต้น 6 แสนข้อความต่อนาทีครอบคลุมนักพัฒนาแอปกว่า 99% FCM ราย ในขณะเดียวกันก็ปกป้องความเสถียรของระบบและลดผลกระทบของโปรเจ็กต์ที่เพิ่มขึ้นอย่างรวดเร็ว
รูปแบบการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็ว อาจส่งผลให้เกิดข้อผิดพลาดที่เกินโควต้า ในสถานการณ์ที่เกินโควต้า ระบบจะแสดงรหัสสถานะ HTTP 429 (QUOTA_EXCEEDED) จนกว่าจะมีการเติมโควต้าในนาทีถัดไป ระบบอาจแสดงผลรหัสตอบกลับ 429 ในกรณีที่มีคำขอมากเกินไป เราขอแนะนำให้คุณจัดการรหัส 429 ตามคําแนะนําที่เผยแพร่
โปรดทราบว่า
- โควต้าดาวน์สตรีมจะวัดข้อความ ไม่ใช่คําขอ
- ระบบนับข้อผิดพลาดของไคลเอ็นต์ (รหัสสถานะ HTTP 400-499) (ยกเว้น 429)
- โควต้าเป็นต่อนาที แต่นาทีเหล่านี้ไม่สอดคล้องกับนาฬิกา
โควต้าการตรวจสอบ
คุณดูโควต้า การใช้งาน และข้อผิดพลาดได้ในคอนโซล Google Cloud โดยทำดังนี้
- ไปที่คอนโซลของ Google Cloud
- เลือก API และบริการ
- เลือก Firebase Cloud Messaging API จากรายการตาราง
- เลือกโควต้าและขีดจำกัดของระบบ
หมายเหตุ: กราฟเหล่านี้ไม่ได้ปรับเวลาให้สอดคล้องกับนาทีโควต้าอย่างแม่นยำ ซึ่งหมายความว่าระบบอาจแสดง 429 เมื่อการเข้าชมดูเหมือนว่าต่ำกว่าโควต้า
การขอเพิ่มโควต้า
โปรดตรวจสอบสิ่งต่อไปนี้ก่อนขอเพิ่มโควต้า
- การใช้งานของคุณมัก ≥ 80% ของโควต้าเป็นเวลาอย่างน้อย 5 นาทีติดต่อกันต่อวัน
- คุณมีอัตราข้อผิดพลาดของไคลเอ็นต์น้อยกว่า 5% โดยเฉพาะในช่วงที่มีการเข้าชมสูงสุด
- คุณปฏิบัติตามแนวทางปฏิบัติแนะนำสำหรับการส่งข้อความจำนวนมาก
หากมีคุณสมบัติตรงตามเกณฑ์เหล่านี้ คุณจะส่งคำขอเพิ่มโควต้าได้สูงสุด +25% และ FCM จะพยายามอย่างเต็มที่เพื่อตอบสนองคำขอ (รับประกันไม่ได้ว่ามีการเพิ่มโควต้า)
หากต้องการโควต้าการรับส่งข้อความดาวน์สตรีมเพิ่มเนื่องจากการเปิดตัวที่กําลังจะเกิดขึ้นหรือเหตุการณ์ชั่วคราว โปรดขอโควต้าล่วงหน้าอย่างน้อย 15 วันเพื่อให้เรามีเวลาเพียงพอในการจัดการคําขอ สำหรับคำขอขนาดใหญ่ (>18 ล้านข้อความต่อนาที) คุณต้องแจ้งให้เราทราบล่วงหน้าอย่างน้อย 30 วัน คำขอเปิดตัวและกิจกรรมพิเศษจะยังคงขึ้นอยู่กับอัตราข้อผิดพลาดของไคลเอ็นต์และข้อกำหนดแนวทางปฏิบัติแนะนำ
โปรดดูคำถามที่พบบ่อยเกี่ยวกับโควต้า FCM ด้วย
ขีดจำกัดข้อความหัวข้อ
อัตราการเพิ่ม/นำการสมัครรับข้อมูลหัวข้อออกถูกจำกัดไว้ที่ 3,000 QPS ต่อโปรเจ็กต์
ดูอัตราการส่งข้อความได้ที่การควบคุมปริมาณการส่งต่อ
การควบคุม Fanout
แฟนเอาต์ข้อความคือกระบวนการส่งข้อความไปยังอุปกรณ์หลายเครื่อง เช่น เมื่อคุณกำหนดหัวข้อและกลุ่มเป้าหมาย หรือเมื่อคุณใช้ตัวเขียนการแจ้งเตือนเพื่อกำหนดกลุ่มเป้าหมายหรือกลุ่มผู้ใช้
การส่งต่อข้อความจะไม่เกิดขึ้นทันที คุณจึงอาจเห็นการส่งต่อหลายรายการเกิดขึ้นพร้อมกันในบางครั้ง เราจำกัดจำนวนการส่งต่อข้อความพร้อมกันต่อโปรเจ็กต์ไว้ที่ 1,000 รายการ หลังจากนั้น เราอาจปฏิเสธคำขอแยกย่อยเพิ่มเติมหรือเลื่อนการแยกย่อยคำขอจนกว่าการแยกย่อยบางรายการที่กำลังดำเนินการอยู่จะเสร็จสมบูรณ์
อัตราการ Fanout จริงที่ทำได้จะขึ้นอยู่กับจำนวนโปรเจ็กต์ที่ขอ Fanout พร้อมกัน อัตราการ Fanout ที่ 10,000 QPS สำหรับแต่ละโปรเจ็กต์นั้นไม่ใช่เรื่องแปลก แต่จำนวนนั้นไม่ได้เป็นการรับประกันและเป็นผลมาจากภาระงานทั้งหมดในระบบ โปรดทราบว่าความสามารถในการแยกสัญญาณที่มีอยู่จะแบ่งระหว่างโปรเจ็กต์ ไม่ใช่คำขอแยกสัญญาณ ดังนั้น หากโปรเจ็กต์ของคุณมีการแยกกลุ่ม 2 รายการที่อยู่ระหว่างดำเนินการ แต่ละกลุ่มจะดูได้เพียงครึ่งหนึ่งของอัตราแยกกลุ่มที่ใช้ได้ วิธีที่เราแนะนําเพื่อเพิ่มความเร็วสูงสุดให้กับการแยกย่อยคือให้ดำเนินการแยกย่อยที่ใช้งานอยู่เพียงรายการเดียวในแต่ละครั้ง
การควบคุมข้อความที่ยุบได้
ตามที่อธิบายไว้ข้างต้น ข้อความที่ยุบได้คือการแจ้งเตือนที่ไม่มีเนื้อหาซึ่งออกแบบมาเพื่อให้ยุบทับกัน ในกรณีที่นักพัฒนาแอปส่งข้อความเดิมซ้ำๆ ไปยังแอปบ่อยเกินไป เราจะเลื่อนเวลา (จำกัด) ข้อความเพื่อลดผลกระทบต่อแบตเตอรี่ของผู้ใช้
ตัวอย่างเช่น หากคุณส่งคำขอซิงค์อีเมลใหม่จำนวนมากไปยังอุปกรณ์เครื่องเดียว เราอาจเลื่อนคำขอซิงค์อีเมลถัดไปออกไป 2-3 นาทีเพื่อให้อุปกรณ์ซิงค์ในอัตราเฉลี่ยที่ต่ำลง การจำกัดนี้ทำขึ้นเพื่อจำกัดผลกระทบต่อแบตเตอรี่ที่ผู้ใช้ได้รับอย่างเคร่งครัด
หาก Use Case ของคุณต้องใช้รูปแบบการส่งแบบระเบิดสูง ข้อความแบบไม่สามารถยุบได้อาจเป็นตัวเลือกที่เหมาะสม สำหรับข้อความดังกล่าว โปรดใส่เนื้อหาในข้อความดังกล่าวเพื่อลดต้นทุนแบตเตอรี่
เราจำกัดข้อความที่ยุบได้ 20 ข้อความต่อแอปต่ออุปกรณ์หนึ่งเครื่อง โดยเติม 1 ข้อความทุกๆ 3 นาที
การควบคุมเซิร์ฟเวอร์ XMPP
เราจำกัดอัตราการที่คุณเชื่อมต่อกับเซิร์ฟเวอร์ XMPP ของ FCM ไว้ที่ 400 ครั้งต่อนาทีต่อโปรเจ็กต์ การดำเนินการนี้ไม่ควรเป็นปัญหาในการนำส่งข้อความ แต่มีความสำคัญต่อความเสถียรของระบบ สำหรับแต่ละโปรเจ็กต์ FCM อนุญาตให้มีการเชื่อมต่อ 2,500 รายการพร้อมกัน
สําหรับการรับส่งข้อความขาเข้าด้วย XMPP ทาง FCM จะจํากัดข้อความขาเข้าไว้ที่ 1,500,000 ข้อความ/นาทีต่อการรับส่ง 1 โปรเจ็กต์ เพื่อไม่ให้เซิร์ฟเวอร์ปลายทางขาเข้ามีภาระงานมากเกินไป
เราจำกัดข้อความขาขึ้นต่ออุปกรณ์ไว้ที่ 1,000 ข้อความ/นาทีเพื่อป้องกันไม่ให้แบตเตอรี่หมดจากลักษณะการทำงานที่ไม่ดีของแอป
อัตราการส่งข้อความสูงสุดไปยังอุปกรณ์เครื่องเดียว
สำหรับ Android คุณสามารถส่งข้อความได้ถึง 240 ข้อความ/นาที และ 5,000 ข้อความ/ชั่วโมงไปยังอุปกรณ์ 1 เครื่อง เกณฑ์สูงนี้ช่วยให้มีการเข้าชมเพิ่มขึ้นอย่างรวดเร็วในระยะสั้น เช่น เมื่อผู้ใช้โต้ตอบผ่านแชทอย่างรวดเร็ว ขีดจํากัดนี้ช่วยป้องกันข้อผิดพลาดในการส่งตรรกะไม่ให้แบตเตอรี่ของอุปกรณ์หมดโดยไม่ตั้งใจ
สำหรับ iOS เราจะแสดงข้อผิดพลาดเมื่ออัตราเกินขีดจำกัด APN
พอร์ต FCM และไฟร์วอลล์
หากองค์กรมีไฟร์วอลล์เพื่อจำกัดการรับส่งข้อมูลไปยังหรือจากอินเทอร์เน็ต คุณต้องกำหนดค่าไฟร์วอลล์เพื่ออนุญาตให้อุปกรณ์เคลื่อนที่เชื่อมต่อกับ FCM เพื่อให้อุปกรณ์ในเครือข่ายรับข้อความได้ โดยทั่วไป FCM จะใช้พอร์ต 5228 แต่บางครั้งก็ใช้ 443, 5229 และ 5230
FCM จะไม่ระบุ IP ที่เจาะจงสำหรับอุปกรณ์ที่เชื่อมต่อในเครือข่าย เนื่องจากช่วง IP ของเราเปลี่ยนแปลงบ่อยเกินไปและกฎไฟร์วอลล์อาจล้าสมัย ซึ่งส่งผลต่อประสบการณ์ของผู้ใช้ โดยควรเพิ่มพอร์ต 5228-5230 และ 443 ลงในรายการที่อนุญาตโดยไม่มีการจํากัด IP อย่างไรก็ตาม หากจำเป็นต้องมีการจํากัด IP คุณควรเพิ่มที่อยู่ IP ทั้งหมดที่แสดงใน goog.json ลงในรายการที่อนุญาต รายการขนาดใหญ่นี้จะอัปเดตเป็นประจำ และเราขอแนะนำให้คุณอัปเดตกฎทุกเดือน ปัญหาที่เกิดจากข้อจํากัด IP ของไฟร์วอลล์มักจะเกิดขึ้นเป็นพักๆ และวินิจฉัยได้ยาก
เรามีชุดชื่อโดเมนที่อยู่ในรายการที่อนุญาตแทนที่อยู่ IP ได้ ชื่อโฮสต์เหล่านั้นแสดงอยู่ด้านล่าง หากเราเริ่มใช้ชื่อโฮสต์เพิ่มเติม เราจะอัปเดตรายการที่นี่ การใช้ชื่อโดเมนสำหรับกฎไฟร์วอลล์อาจใช้งานได้หรือไม่ก็ได้ในอุปกรณ์ไฟร์วอลล์
พอร์ต TCP ที่จะเปิด:
- 5228
- 5229
- 5230
- 443
ชื่อโฮสต์ที่จะเปิด:
- mtalk.google.com
- mtalk4.google.com
- mtalk-staging.google.com
- mtalk-dev.google.com
- alt1-mtalk.google.com
- alt2-mtalk.google.com
- alt3-mtalk.google.com
- alt4-mtalk.google.com
- alt5-mtalk.google.com
- alt6-mtalk.google.com
- alt7-mtalk.google.com
- alt8-mtalk.google.com
- android.apis.google.com
- device-provisioning.googleapis.com
- firebaseinstallations.googleapis.com
ไฟร์วอลล์การแปลที่อยู่เครือข่ายและ/หรือการตรวจสอบแพ็กเก็ตแบบเก็บสถานะ
หากเครือข่ายของคุณใช้การเปลี่ยนที่อยู่เครือข่าย (NAT) หรือการตรวจสอบแพ็กเก็ตแบบมีสถานะ (SPI) ให้ใช้การหมดเวลา 30 นาทีขึ้นไปสําหรับการเชื่อมต่อผ่านพอร์ต 5228-5230 ซึ่งช่วยให้เรามอบการเชื่อมต่อที่เชื่อถือได้พร้อมทั้งลดการใช้แบตเตอรี่ของอุปกรณ์เคลื่อนที่ของผู้ใช้
การโต้ตอบกับ VPN และการข้ามได้
Firebase Cloud Messaging ดำเนินการหลายขั้นตอนเพื่อให้มั่นใจว่าการเชื่อมต่อการรับส่งข้อความพุชจากโทรศัพท์ไปยังเซิร์ฟเวอร์มีความน่าเชื่อถือและพร้อมใช้งานบ่อยที่สุดเท่าที่จะทำได้ การใช้ VPN ทำให้การดำเนินการนี้มีความซับซ้อน
VPN จะปกปิดข้อมูลพื้นฐานที่ FCM จำเป็นต้องปรับการเชื่อมต่อเพื่อเพิ่มความน่าเชื่อถือและอายุการใช้งานแบตเตอรี่ให้ได้สูงสุด ในบางกรณี VPN จะตัดการเชื่อมต่อที่ทำงานอยู่นานๆ ออก ซึ่งส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดีเนื่องจากข้อความที่พลาดไปหรือล่าช้า หรือแบตเตอรี่หมดเร็ว เมื่อกำหนดค่า VPN ให้อนุญาตแล้ว เราจะข้าม VPN โดยใช้การเชื่อมต่อที่เข้ารหัส (ผ่านเครือข่ายพื้นฐานอย่าง Wi-Fi หรือ LTE) เพื่อให้คุณได้รับประสบการณ์การใช้งานที่เชื่อถือได้และประหยัดแบตเตอรี่ การใช้ VPN ที่ข้ามได้ของ FCM จะใช้ได้เฉพาะกับแชแนลข้อความ Push ของ FCM การรับส่งข้อมูลอื่นๆ ของ FCM เช่น การรับส่งข้อมูลการลงทะเบียน จะใช้ VPN หากทำงานอยู่ เมื่อการเชื่อมต่อ FCM ข้าม VPN จะทำให้ VPN เสียสิทธิประโยชน์อื่นๆ ที่อาจมี เช่น การมาสก์ IP
VPN ต่างๆ จะมีวิธีการที่แตกต่างกันในการควบคุมว่าจะข้ามได้หรือไม่ โปรดดูวิธีการในเอกสารประกอบของ VPN นั้นๆ
หากไม่ได้กำหนดค่า VPN ให้ข้ามได้ Firebase Cloud Messaging จะใช้เครือข่าย VPN เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ ซึ่งอาจส่งผลให้ข้อความล่าช้าเป็นระยะเวลาหนึ่งและอาจทำให้ใช้แบตเตอรี่มากขึ้นเนื่องจาก Cloud Messaging พยายามรักษาการเชื่อมต่อผ่านการเชื่อมต่อ VPN
ข้อมูลเข้าสู่ระบบ
คุณอาจต้องใช้ข้อมูลเข้าสู่ระบบต่อไปนี้จากโปรเจ็กต์ Firebase ทั้งนี้ขึ้นอยู่กับฟีเจอร์ FCM ที่คุณติดตั้งใช้งาน
รหัสโปรเจ็กต์ | ตัวระบุที่ไม่ซ้ำกันสำหรับโปรเจ็กต์ Firebase ของคุณ ซึ่งใช้ในคำขอไปยังFCMปลายทาง HTTP v1 ค่านี้จะอยู่ในแผงการตั้งค่าของคอนโซล Firebase |
โทเค็นการลงทะเบียน | สตริงโทเค็นที่ไม่ซ้ำกันซึ่งระบุอินสแตนซ์ของแอปไคลเอ็นต์แต่ละรายการ จำเป็นต้องใช้โทเค็นการลงทะเบียนสำหรับการรับส่งข้อความกลุ่มและอุปกรณ์เครื่องเดียว โปรดทราบว่าโทเค็นการลงทะเบียนต้องเก็บเป็นความลับ |
รหัสผู้ส่ง | ค่าตัวเลขที่ไม่ซ้ำกันที่สร้างขึ้นเมื่อคุณสร้างโปรเจ็กต์ Firebase จะมีอยู่ในแท็บ Cloud Messaging ของแผงการตั้งค่าของคอนโซล Firebase ระบบจะใช้รหัสผู้ส่งเพื่อระบุผู้ส่งแต่ละรายที่ส่งข้อความไปยังแอปไคลเอ็นต์ได้ |
โทเค็นเพื่อการเข้าถึง | โทเค็น OAuth 2.0 ที่มีอายุสั้นซึ่งให้สิทธิ์คำขอไปยัง HTTP v1 API โทเค็นนี้เชื่อมโยงกับบัญชีบริการที่เป็นของโปรเจ็กต์ Firebase หากต้องการสร้างและเปลี่ยนโทเค็นการเข้าถึง ให้ทําตามขั้นตอนที่อธิบายไว้ในการให้สิทธิ์ส่งคําขอ |
คีย์เซิร์ฟเวอร์ (สำหรับโปรโตคอลเดิมที่**เลิกใช้งานแล้ว**) | คีย์เซิร์ฟเวอร์ที่ให้สิทธิ์เซิร์ฟเวอร์แอปของคุณในการเข้าถึงบริการของ Google ซึ่งรวมถึงการส่งข้อความผ่านโปรโตคอลเดิม Firebase Cloud Messaging ที่เลิกใช้งานแล้ว สำคัญ: อย่าใส่คีย์เซิร์ฟเวอร์ไว้ในโค้ดไคลเอ็นต์ และโปรดใช้เฉพาะคีย์เซิร์ฟเวอร์เพื่อให้สิทธิ์เซิร์ฟเวอร์แอป FCM ปฏิเสธคีย์แพลตฟอร์ม Android, Apple และเบราว์เซอร์ |