ข้อความตามหัวข้อใน Flutter

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

ขั้นตอนถัดไป