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