หากต้องการรับข้อความดาวน์สตรีมแบบง่าย แอปไคลเอ็นต์แต่ละแอปจะต้องใช้เมธอดใน API ของ firebase::messaging::Listener
เริ่มต้น 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 สัปดาห์ที่ผ่านมา)
เราขอแนะนําให้แอปซิงค์กับเซิร์ฟเวอร์แอปอย่างเต็มรูปแบบหลังจากได้รับการเรียกนี้