การรับส่งข้อความตามหัวข้อของ FCM ช่วยให้คุณสามารถส่งข้อความไปยังอุปกรณ์หลายเครื่องที่เลือกใช้หัวข้อหนึ่งๆ ตามรูปแบบการเผยแพร่/การสมัครรับข้อมูล คุณจะเขียนข้อความหัวข้อได้ตามต้องการ และ FCM จะจัดการการกำหนดเส้นทางและนำส่งข้อความไปยังอุปกรณ์ที่ถูกต้องอย่างน่าเชื่อถือ
ตัวอย่างเช่น ผู้ใช้แอปพยากรณ์น้ำขึ้นน้ำลงในพื้นที่อาจเลือกใช้หัวข้อ "การแจ้งเตือนกระแสน้ำขึ้นน้ำลง" และรับการแจ้งเตือนเกี่ยวกับสภาพการตกปลาในน้ำเค็มที่เหมาะสมที่สุดในพื้นที่ที่ระบุ ผู้ใช้แอปกีฬาสามารถสมัครรับการอัปเดตอัตโนมัติเกี่ยวกับคะแนนการแข่งขันแบบสดของทีมโปรด
สิ่งที่ควรคำนึงถึงเกี่ยวกับหัวข้อมีดังนี้
การรับส่งข้อความตามหัวข้อเหมาะสําหรับเนื้อหา เช่น สภาพอากาศ หรือข้อมูลอื่นๆ ที่เผยแพร่ต่อสาธารณะ
ข้อความหัวข้อจะเพิ่มประสิทธิภาพเพื่อการรับส่งข้อมูลแทนเวลาในการตอบสนอง หากต้องการนำส่งข้อความไปยังอุปกรณ์เครื่องเดียวหรือกลุ่มอุปกรณ์เล็กๆ อย่างปลอดภัยและรวดเร็ว ให้กำหนดเป้าหมายข้อความไปยังโทเค็นการลงทะเบียน ไม่ใช่หัวข้อ
หากต้องการส่งข้อความไปยังอุปกรณ์หลายเครื่องต่อผู้ใช้ ให้ลองใช้การรับส่งข้อความแบบกลุ่มอุปกรณ์สำหรับกรณีการใช้งานเหล่านั้น
การรับส่งข้อความตามหัวข้อรองรับการสมัครใช้บริการแบบไม่จำกัดสำหรับแต่ละหัวข้อ อย่างไรก็ตาม FCM จะบังคับใช้ขีดจํากัดในด้านต่อไปนี้
- อินสแตนซ์แอป 1 รายการจะติดตามหัวข้อได้ไม่เกิน 2,000 หัวข้อ
- หากคุณใช้การนําเข้าแบบเป็นกลุ่มเพื่อสมัครใช้บริการอินสแตนซ์แอป คําขอแต่ละรายการจะจํากัดไว้ที่อินสแตนซ์แอป 1, 000 รายการ
- ความถี่ของการสมัครใช้บริการใหม่จะจำกัดอัตราต่อโปรเจ็กต์ หากคุณส่งคำขอสมัครใช้บริการมากเกินไปในระยะเวลาสั้นๆ เซิร์ฟเวอร์ FCM จะตอบกลับด้วยการตอบกลับ
429 RESOURCE_EXHAUSTED
("เกินโควต้า") ลองอีกครั้งโดยใช้ Exponential Backoff
สมัครใช้บริการแอปไคลเอ็นต์ในหัวข้อ
แอปไคลเอ็นต์สามารถสมัครรับหัวข้อที่มีอยู่หรือสร้างหัวข้อใหม่ก็ได้ เมื่อแอปไคลเอ็นต์สมัครรับชื่อหัวข้อใหม่ (ชื่อที่ไม่มีอยู่ในโปรเจ็กต์ Firebase ของคุณ) ระบบจะสร้างหัวข้อใหม่ชื่อนั้นใน FCM และแอปไคลเอ็นต์ทุกแอปจะสมัครรับหัวข้อดังกล่าวได้ในภายหลัง
หากต้องการสมัครรับข้อมูลหัวข้อ ให้เรียกใช้ subscribeToTopic()
พร้อมชื่อหัวข้อ เมธอดนี้จะแสดงผล Future
ซึ่งจะแสดงผลเมื่อการสมัครใช้บริการสําเร็จ
await FirebaseMessaging.instance.subscribeToTopic("topic");
หากต้องการยกเลิกการติดตาม ให้โทรหา unsubscribeFromTopic()
พร้อมชื่อหัวข้อ
แต่ไคลเอ็นต์เว็บไม่รองรับ subscribeToTopic()
และ unsubscribeFromTopic()
ดูวิธีจัดการการติดตามสำหรับผู้ใช้เว็บได้ที่
ส่งข้อความไปยังหัวข้อในเว็บ/JavaScript
ขั้นตอนถัดไป
- ดูวิธีส่งข้อความหัวข้อ
- ดูวิธีจัดการการติดตามหัวข้อบนเซิร์ฟเวอร์