รับข้อความในแอป C++

เลือกแพลตฟอร์ม: iOS+ Android Web Flutter Unity C++


หากต้องการรับข้อความดาวน์สตรีม แอปไคลเอ็นต์แต่ละแอปต้องใช้เมธอด ใน firebase::messaging::Listener API

เริ่มต้น FCM

คุณต้องเริ่มต้น 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" ระบบอาจลบข้อความเนื่องจากสาเหตุต่อไปนี้

  1. มีข้อความจำนวนมากเกินไปที่จัดเก็บไว้ในเซิร์ฟเวอร์ FCM

    กรณีนี้อาจเกิดขึ้นเมื่อเซิร์ฟเวอร์ของแอปส่งข้อความที่ยุบไม่ได้ จำนวนมากไปยังเซิร์ฟเวอร์ FCM ขณะที่อุปกรณ์ออฟไลน์

  2. อุปกรณ์ไม่ได้เชื่อมต่อเป็นเวลานาน และเซิร์ฟเวอร์ของแอปเพิ่งส่งข้อความไปยังแอปในอุปกรณ์นั้น (ภายใน 4 สัปดาห์ที่ผ่านมา)

    เราขอแนะนำให้แอปซิงค์ข้อมูลกับเซิร์ฟเวอร์ของแอปอย่างเต็มรูปแบบหลังจากได้รับคำขอนี้