Чтобы получать простые нисходящие сообщения, каждое клиентское приложение должно реализовать методы 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);
Доступ к регистрационному токену
При первом запуске вашего приложения пакет SDK FCM создает токен регистрации для экземпляра клиентско��о приложения. Если вы хотите настроить таргетинг на отдельные устройства или создать группы устройств для 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"
. Сообщения могут быть удалены по причинам:
Слишком много сообщений хранится на сервере FCM .
Эт�� может произойти, когда серверы приложения отправляют набор несворачива��м��х с��общений ��а серверы FCM , когда устройство находится в автономном режиме.
Устройство долгое время не подключалось, и сервер приложений недавно (в течение последних 4 неде��ь) отправил сообщение приложению на этом устройстве.
После получения этого вызова приложению рекомендуется выполнить полную синхронизацию с сервером приложений.