Получение сообщений в приложениях на C++

Выберите платформу: iOS+ Android Web 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. Устройство давно не подключалось, и сервер приложений недавно (в течение последних 4 недель) отправил сообщение приложению на этом устройстве.

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