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

Для получения простых нисходящих сообщений каждое клиентское приложение должно реализовать методы API firebase::messaging::Listener .

Инициализировать FCM

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

Чтобы инициализировать FCM , вызовите ::firebase::messaging::Initialize и предоставьте ему объект ::firebase::App , а также реализацию класса ::firebase::messaging::Listener .

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

Доступ к регистрационному токену

При первом запуске вашего приложения FCM SDK генерирует токен регистрации для экземпляра клиентского приложения. Если вы хотите нацелиться на отдельные устройства или создать группы устройств для 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 недель) отправил сообщение приложению на этом устройстве.

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