Nhận tin nhắn trên ứng dụng khách C++

Để nhận các tin nhắn xuôi dòng đơn giản, mỗi ứng dụng khách cần triển khai các phương thức trên API firebase::messaging::Listener .

Khởi tạo FCM

Trước khi bạn có thể sử dụng FCM để có quyền truy cập vào mã thông báo đăng ký của mình hoặc nhận tin nhắn, nó phải được khởi tạo.

Để khởi tạo FCM, hãy gọi ::firebase::messaging::Initialize và cung cấp nó với đối tượng ::firebase::App của bạn cũng như triển khai lớp ::firebase::messaging::Listener .

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

Truy cập mã thông báo đăng ký

Khi khởi động ứng dụng lần đầu, FCM SDK sẽ tạo mã thông báo đăng ký cho phiên bản ứng dụng khách. Nếu bạn muốn nhắm mục tiêu các thiết bị đơn lẻ hoặc tạo nhóm thiết bị cho FCM, bạn sẽ cần truy cập mã thông báo này.

Bạn có thể truy cập giá trị của mã thông báo thông qua ::firebase::messaging::Listener::OnTokenReceived .

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

Nhận và xử lý tin nhắn

Để nhận tin nhắn, lớp Listener của bạn phải triển khai chức năng ảo OnMessage .

Ghi đè OnMessage

Bằng cách ghi đè phương thức ::firebase::messaging::Listener::OnMessage , bạn có thể thực hiện các hành động dựa trên tin nhắn đã nhận và lấy dữ liệu tin nhắn:

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());
}

Tin nhắn có thể đại diện cho các loại dữ liệu đến khác nhau. Thông thường nhất, tin nhắn sẽ được gửi đến ứng dụng sau khi được nhà phát triển bắt đầu. Tin nhắn cũng được gửi đến ứng dụng của bạn để thể hiện các sự kiện đã gửi tin nhắn, sự kiện lỗi gửi tin nhắn và sự kiện đã xóa tin nhắn. Những sự kiện đặc biệt này có thể được phân biệt bằng cách kiểm tra trường Message::message_type .

Tin nhắn đã bị xóa

Được gửi tới ứng dụng của bạn khi máy chủ FCM xóa các tin nhắn đang chờ xử lý. Message::message_type sẽ là "deleted_messages" . Tin nhắn có thể bị xóa do:

  1. Quá nhiều tin nhắn được lưu trữ trên máy chủ FCM.

    Điều này có thể xảy ra khi máy chủ của ứng dụng gửi một loạt tin nhắn không thể thu gọn đến máy chủ FCM trong khi thiết bị ngoại tuyến.

  2. Thiết bị đã lâu không kết nối và máy chủ ứng dụng gần đây (trong vòng 4 tuần qua) đã gửi tin nhắn đến ứng dụng trên thiết bị đó.

    Chúng tôi khuyên ứng dụng nên đồng bộ hóa hoàn toàn với máy chủ ứng dụng sau khi nhận được cuộc gọi này.