Получение сообщений в клиентском приложении 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 неде��ь) отправил сообщение приложению на этом устройстве.

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