Как получать сообщения в приложениях на C++

Выберите платформу: iOS+ Android Веб Flutter Unity 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);

Как получить токен регистрации

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

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