การรับส่งข้อความหัวข้อ 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