Типы сообщений Firebase Cloud Messaging

С помощью FCM можно отправлять в клиентские приложения два типа сообщений:

  • Уведомления, похожие на сообщения, обрабатываются автоматически с помощью SDK FCM.
  • Сообщения с данными, которые обрабатываются клиентским приложением.

Уведомления содержат набор видимых пользователю ключей и могут включать полезную нагрузку. Сообщения с данными, напротив, содержат только заданные вами пары "ключ-значение". Максимальный размер полезной нагрузки для обоих типов сообщений составляет 4096 байтов, за исключением случаев, когда сообщения отправляются с консоли Firebase, где действует ограничение в 1000 символов.

Как использовать сценарий Как отправить
Уведомление FCM SDK показывает сообщение на устройствах конечных пользователей от имени клиентского приложения, когда оно работает в фоновом режиме. Если приложение работает в момент получения уведомления, его поведение определяется кодом.
  1. В доверенной среде, например Cloud Functions или на сервере приложения, используйте Firebase Admin SDK или HTTP API версии 1. Установите ключ notification. Может содержать необязательную полезную нагрузку. Всегда складной.

    Посмотрите примеры уведомлений и полезных нагрузок запросов.

  2. Используйте создатель уведомлений: введите текст сообщения, заголовок и другие данные, а затем отправьте уведомление. Добавьте необязательную полезную нагрузку данных, указав специальные данные.
Сообщение с данными Обработка сообщений с данными выполняется клиентским приложением. Сообщения с данными содержат только специальные пары "ключ-значение" без зарезервированных названий ключей (см. ниже). В доверенной среде, например Cloud Functions или на сервере приложения, используйте Firebase Admin SDK или HTTP API версии 1. В запросе на отправку задайте ключ data.

Уведомления можно использовать, когда вы хотите, чтобы SDK FCM автоматически показывал уведомление, если приложение работает в фоновом режиме. FCM может отправлять уведомления с дополнительной полезной нагрузкой. В таких случаях FCM отображает полезную нагрузку уведомления, а клиентское приложение обрабатывает полезную нагрузку данных.

Сообщения с данными можно использовать, если вы хотите обрабатывать их с помощью собственного кода клиентского приложения.

Уведомления

Вы можете отправлять сообщения с уведомлениями с помощью консоли Firebase, Firebase Admin SDK или FCM HTTP v1 API.FirebaseFirebase Admin SDK Консоль Firebase позволяет проводить A/B-тестирование на основе аналитических данных, чтобы улучшать уведомления.

Чтобы отправлять уведомления с помощью API HTTP v1 Firebase Admin SDK или FCM, задайте ключ notification с предопределенным набором вариантов "ключ-значение" для уведомления. Приведенный ниже пример поможет вам отформатировать сообщение уведомления в приложении для обмена мгновенными сообщениями.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Уведомления доставляются в область уведомлений, когда приложение работает в фоновом режиме. Для приложений, работающих на переднем плане, сообщения обрабатываются функцией обратного вызова.

Полный список стандартных ключей, которые можно использовать для создания уведомлений, приведен в справочной документации по объекту уведомления FCM HTTP v1 API.

Сообщения с данными

Вы можете использовать полезную нагрузку FCM data для реализации выбранной схемы шифрования. Убедитесь, что в ваших собственных парах "ключ-значение" не используются зарезервированные слова. К зарезервированным словам относятся from, message_type и любые слова, начинающиеся с google., gcm. или gcm.notification..

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

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Уведомления с необязательной полезной нагрузкой

Вы можете отправлять уведомления, содержащие необязательную полезную нагрузку с парами "ключ-значение", программно или с помощью консоли Firebase. В конструкторе уведомлений используйте поля Специальные данные в разделе Расширенные настройки.

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

  • В фоновом режиме приложения получают полезную нагрузку уведомления в области уведомлений и обрабатывают полезную нагрузку данных только после того, как пользователь нажмет на уведомление.
  • Когда приложение находится на переднем плане, оно получает объект сообщения, в котором доступны обе полезные нагрузки.

Ниже приведен пример сообщения в формате JSON, содержащего ключ notification и ключ data:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}