С помощью FCM можно отправлять в клиентские приложения два типа сообщений:
- Уведомления, похожие на сообщения, обрабатываются автоматически с помощью SDK FCM.
- Сообщения с данными, которые обрабатываются клиентским приложением.
Уведомления содержат набор видимых пользователю ключей и могут включать полезную нагрузку. Сообщения с данными, напротив, содержат только заданные вами пары "ключ-значение". Максимальный размер полезной нагрузки для обоих типов сообщений составляет 4096 байтов, за исключением случаев, когда сообщения отправляются с консоли Firebase, где действует ограничение в 1000 символов.
| Как использовать сценарий | Как отправить | |
|---|---|---|
| Уведомление | FCM SDK показывает сообщение на устройствах конечных пользователей от имени клиентского приложения, когда оно работает в фоновом режиме. Если приложение работает в момент получения уведомления, его поведение определяется кодом. |
|
| Сообщение с данными | Обработка сообщений с данными выполняется клиентским приложением. Сообщения с данными содержат только специальные пары "ключ-значение" без зарезервированных названий ключей (см. ниже). | В доверенной среде, например
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"
}
}
}