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

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