Получение сообщений в клиентском приложении C++

Чтобы получать простые нисходящие сообщения, каждое клиентское приложение должно реализовать методы 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" . Сообщения могут быть удалены по причинам:

  1. Слишком много сообщений хранится на сервере FCM .

    Это может произойти, когда серверы приложения отправляют набор несворачиваемых сообщений на серверы FCM , когда устройство находится в автономном режиме.

  2. Устройство долгое время не подключалось, и сервер приложений недавно (в течение последних 4 недель) отправил сообщение приложению на этом устройстве.

    После получения этого вызова приложению рекомендуется выполнить полную синхронизацию с сервером приложений.