รับข้อความบนแอปไคลเอ็นต์ C++

หากต้องการรับข้อความดาวน์สตรีมแบบง่าย แอปไคลเอนต์แต่ละแอปจะต้องใช้วิธีการบน 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" ข้อความอาจถูกลบเนื่องจาก:

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

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

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

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