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

Để nhận các thông báo đơn giản về sau, mỗi ứng dụng khách cần triển khai trên firebase::messaging::Listener API.

Khởi chạy FCM

Bạn phải khởi chạy mã thông báo đăng ký hoặc nhận thông báo trước khi có thể dùng FCM.

Để khởi chạy FCM, hãy gọi ::firebase::messaging::Initialize và cung cấp cùng với thông tin ::firebase::App cũng như việc triển khai ::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 tiên, SDK FCM sẽ tạo một đăng ký mã thông báo cho phiên bản ứng dụng khách. Nếu bạn 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 phải 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 ::firebase::messaging::Listener::OnTokenReceived hàm ảo.

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 thông báo, lớp Trình nghe của bạn phải triển khai OnMessage hàm ảo.

Ghi đè OnMessage

Bằng cách ghi đè phương thức ::firebase::messaging::Listener::OnMessage, bạn có thể thực hiện hành động dựa trên tin nhắn đã nhận và xem 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, được gửi đến ứng dụng sau khi được nhà phát triển khởi tạo. Tin nhắn cũng được gửi đến ứng dụng của bạn để biểu thị sự kiện đã gửi tin nhắn, lỗi gửi tin nhắn sự kiện và tin nhắn bị xoá. Bạn có thể tách riêng những sự kiện đặc biệt này bằng cách kiểm tra trường Message::message_type.

Đã xoá tin nhắn

Đã 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ẽ "deleted_messages". Tin nhắn có thể bị xoá đến hạn thành:

  1. Đã lưu trữ quá nhiều thông báo trên máy chủ FCM.

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

  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 cho ứng dụng về thiết bị.

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