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

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

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

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

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

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

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

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

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

Уведомления

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

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

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

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

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

Сообщения данных

Вы сами решаете, как использовать data полезной нагрузки FCM для реализации выбранной вами схемы шифрования. Убедитесь, что вы не используете зарезервированные слова в своих пользовательских парах ключ-значение. К зарезервированным словам относятся 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"
    }
  }
}