Ответ 1
Была добавлена последняя функция для FCM, которая дает возможность предоставлять определенные параметры для определенных платформ, называемые Переопределения платформы:
Настройка сообщения через платформы
Сообщения, отправленные протоколом FCM v1 HTTP, могут содержать два типа пар ключей JSON:
- общий набор ключей, которые будут интерпретироваться всеми экземплярами приложений, которые получают сообщение.
- блоки, специфичные для платформы, которые интерпретируются только экземплярами приложений, запущенными на указанной платформе.
- Блоки, специфичные для платформы, позволяют гибко настраивать сообщения для разных платформ, чтобы обеспечить их правильную обработку при их получении. Во многих сценариях имеет смысл использовать как общие ключи, так и определенные для платформы ключи в данном сообщении.
Когда использовать общие клавиши
- Всякий раз, когда вы нацеливаете экземпляры приложений на всех платформах - iOS, Android и web
- Когда вы отправляете сообщения по темам
Общими ключами, которые интерпретируются всеми экземплярами приложения независимо от платформы, являются message.notification.title, message.notification.body и message.data.
Когда использовать специальные для платформы ключи
- Если вы хотите отправлять поля только на определенные платформы
- Чтобы отправить поля, специфичные для платформы, в дополнение к общим ключам
Всякий раз, когда вы хотите отправлять значения только на определенные платформы, не используйте общие ключи; используйте ключевые блоки для платформы. Например, для отправки уведомлений только на iOS и в Интернете, но не на Android, вы должны использовать два отдельных блока ключей: один для iOS и один для Интернета.
Когда вы отправляете сообщения с определенными параметрами доставки, используйте их, чтобы установить их. Вы можете указать разные значения на платформу, если хотите; но даже если вы хотите установить практически одинаковое значение для разных платформ, вы должны использовать специальные ключи для платформы. Это связано с тем, что каждая платформа может интерпретировать значение немного по-разному - например, время жизни устанавливается на Android как время истечения в секундах, тогда как в iOS оно устанавливается как дата истечения срока действия.
Пример: уведомление с параметрами доставки на платформе
Следующий запрос отправки v1 отправляет общее название и содержимое уведомлений всем платформам, но также отправляет некоторые переопределения для конкретной платформы. В частности, запрос:
- устанавливает длительное время ожидания для Android и веб-платформ, при этом приоритет сообщения APNs (iOS) соответствует низкой настройке
- устанавливает соответствующие ключи для определения результата нажатия пользователем уведомления об Android и iOS - click_action и категории соответственно.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
},
"android":{
"ttl":"86400s",
"notification"{
"click_action":"OPEN_ACTIVITY_1"
}
},
"apns": {
"headers": {
"apns-priority": "5",
},
"payload": {
"aps": {
"category": "NEW_MESSAGE_CATEGORY"
}
}
},
"webpush":{
"headers":{
"TTL":"86400"
}
}
}
}
См. справочную документацию по HTTP v1 для получения подробной информации о ключах, доступных в блоках, специфичных для платформы, в теле сообщения. Для получения дополнительной информации о создании запросов на отправку, содержащих тело сообщения, см. Build Send Requests.