Nhận thông báo trên ứng dụng C++

Để nhận thông báo truyền tải đơ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 động FCM

Bạn phải khởi chạy FCM thì mới có thể sử dụng FCM để truy cập vào mã thông báo đăng ký hoặc nhận thông báo.

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

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

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

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

Bạn có thể truy cập vào giá trị của mã thông báo thông qua hàm ảo ::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ý thông báo

Để nhận thông báo, lớp Trình nghe phải triển khai hàm ả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 thao tác dựa trên tin nhắn đã nhận và nhận 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());
}

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

Đã xoá tin nhắn

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

  1. Quá nhiều thư đượ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 thông báo không thể thu gọn đến máy chủ FCM trong khi thiết bị đang ở chế độ ngoại tuyến.

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

    Bạn nên đồng bộ hoá đầy đủ ứng dụng với máy chủ ứng dụng sau khi nhận được lệnh gọi này.