Để 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:
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.
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.