คู่มือนี้อธิบายวิธีตั้งค่า Firebase Cloud Messaging ในแอปไคลเอ็นต์บนอุปกรณ์เคลื่อนที่และเว็บ เพื่อให้คุณรับข้อความได้อย่างน่าเชื่อถือ
หากต้องการรับข้อความดาวน์สตรีม แอปไคลเอ็นต์แต่ละแอปต้องใช้เมธอดใน firebase::messaging::Listener
API
เริ่มต้น FCM
คุณต้องเริ่มต้นใช้งาน FCM ก่อนจึงจะใช้เพื่อรับโทเค็นการลงทะเบียนหรือ รับข้อความได้
หากต้องการเริ่มต้น FCM ให้เรียกใช้
::firebase::messaging::Initialize
และระบุออบเจ็กต์ ::firebase::App
รวมถึงการใช้งานคลาส
::firebase::messaging::Listener
MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);
เข้าถึงโทเค็นการลงทะเบียน
เมื่อเริ่มต้นแอปครั้งแรก FCM SDK จะสร้างโทเค็นการลงทะเบียน สำหรับอินสแตนซ์แอปไคลเอ็นต์ หากต้องการกำหนดเป้าหมายอุปกรณ์เครื่องเดียวหรือสร้างกลุ่มอุปกรณ์สำหรับ FCM คุณจะต้องเข้าถึงโทเค็นนี้
คุณเข้าถึงค่าของโทเค็นได้ผ่านฟังก์ชันเสมือน
::firebase::messaging::Listener::OnTokenReceived
void OnTokenReceived(const char* token) {
LogMessage("The registration token is `%s`", token);
// TODO: If necessary send token to application server.
}
รับและจัดการข้อความ
หากต้องการรับข้อความ คลาส Listener ต้องใช้ฟังก์ชันเสมือน
OnMessage
ลบล้าง OnMessage
การลบล้างเมธอด ::firebase::messaging::Listener::OnMessage
จะช่วยให้คุณดำเนินการตามข้อความที่ได้รับและรับข้อมูล
ข้อความได้ ดังนี้
void OnMessage(const ::firebase::messaging::Message& message) {
LogMessage(TAG, "From: %s", message.from.c_str());
LogMessage(TAG, "Message ID: %s", message.message_id.c_str());
}
ข้อความอาจแสดงข้อมูลขาเข้าประเภทต่างๆ โดยส่วนใหญ่
ข้อความจะส่งไปยังแอปหลังจากที่นักพัฒนาแอปเริ่มส่ง นอกจากนี้ ระบบยังส่งข้อความไปยังแอปเพื่อแสดงเหตุการณ์ข้อความที่ส่ง ข้อผิดพลาดในการส่งข้อความ
และเหตุการณ์ข้อความที่ถูกลบด้วย คุณสามารถแยกความแตกต่างของกิจกรรมพิเศษเหล่านี้ได้โดยดูที่ช่อง Message::message_type
ลบข้อความแล้ว
ส่งไปยังแอปเมื่อเซิร์ฟเวอร์ FCM ลบข้อความที่รอดำเนินการ
Message::message_type
จะเป็น "deleted_messages"
ระบบอาจลบข้อความเนื่องจากสาเหตุต่อไปนี้
มีข้อความจำนวนมากเกินไปที่จัดเก็บไว้ในเซิร์ฟเวอร์ FCM
ปัญหานี้อาจเกิดขึ้นเมื่อเซิร์ฟเวอร์ของแอปส่งข้อความที่ยุบไม่ได้จำนวนมาก ไปยังเซิร์ฟเวอร์ FCM ขณะที่อุปกรณ์ออฟไลน์อยู่
อุปกรณ์ไม่ได้เชื่อมต่อมาเป็นเวลานาน และเซิร์ฟเวอร์ของแอปได้ ส่งข้อความไปยังแอปในอุปกรณ์นั้นเมื่อเร็วๆ นี้ (ภายใน 4 สัปดาห์ที่ผ่านมา)
ขอแนะนำให้แอปทำการซิงค์เต็มรูปแบบกับเซิร์ฟเวอร์ของแอป หลังจากได้รับการเรียกนี้