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

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