Переупаковка уведомлений
Пуш-уведомления для мобильных устройств могут содержать специальные
поля или ключи, специфичные для разных платформ. Также у мобильных платформ свои ограничения на размер данных.
Правила переупаковки позволяют задать ключи, специфичные для платформы, и переупаковать полезные данные, переданные
как payload в методе /v2/send.
Обратите внимание, что правила переупаковки применимы только к данным в формате JSON.
общая структура правил переупаковки
{
"payload": { "custom_key": custom_value },
"repack": {
"push_service_1": {
"specific_parameter_1": value_1,
"specific_parameter_2": value_2,
"repack_payload": [ "custom_key" ]
},
"push_service_2": {
"specific_parameter_1": value_1,
"specific_parameter_2": value_2,
"repack_payload": [ "custom_key" ]
},
...
}
}
Возможные значения для push_service_n: apns, fcm, hms, wns, mpns, other. Все специфичные ключи прокидываются без изменений.
В таблице ниже приведён список поддерживаемых платформенно-специфичных ключей
(например, значение collapse-id
прорастает в заголовок apns-collapse-id).
APNS |
FCM |
HMS |
- collapse-id (apns-collapse-id)
- priority (apns-priority)
- topic (apns-topic)
- aps
|
- notification
- restricted_package_name
- priority
- collapse_key
- delay_while_idle
|
- notification
- urgency
- collapse_key
|
Значение "other" используется, когда для нескольких платформ переупаковка совпадает.
Его нельзя задать, если не задана переупаковка ни для одного пуш-сервиса (в этом случае достаточно послать сразу
один корректный payload в нотификации).
Обратите внимание, что после переупаковки в payload остаются только платформенно-специфичные ключи
и ключи, перечисленные в массиве repack_payload.
Чтобы пробросить все ключи из исходного payload, добавьте специальное wildcard-правило "*" в набор
repack_payload (пример см. ниже).
Позиция wildcard-правила в массиве значения не имеет.
Использование wildcard-правила (*)
{
"payload": { "event": "new message", "user": "john", "tag": "important" },
"repack": {
"apns": {
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"repack_payload": ["*", {"e": "event"}]
}
}
}
⬇
{
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"e": "new message",
"user": "john",
"tag": "important"
}
Яркое уведомление (user notification) в APNs
{
"payload": { "event": "new message", "user": "john" },
"repack": {
"apns": {
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"repack_payload": [{"e": "event"}, "user"]
}
}
}
⬇
{
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"e": "new message",
"user": "john"
}
Скрытое уведомлениие (silent notification) в APNs
{
"payload": { "event": "new message", "user": "john" },
"repack": {
"apns": {
"repack_payload": [{"e": "event"}, "user"]
}
}
}
⬇
{
"aps": {
"content-available": 1
},
"e": "new message",
"user": "john"
}
Яркое уведомлениие без полезных данных в APNs
{
"payload": { "event": "new message", "user": "john" },
"repack": {
"apns": {
"aps": {
"alert": "You have a new message."
},
"repack_payload": []
}
}
}
⬇
{
"aps": {
"alert": "You have a new message."
}
}
Уведомление в APNs и FCM
{
"payload": { "event": "new message", "user": "john" },
"repack": {
"apns": {
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"repack_payload": [{"e": "event"}, "user"]
},
"fcm": {
"notification": {
"title": "You have a new message."
},
"repack_payload": ["event", "user"]
}
}
}
⬇
{
"aps": {
"alert": "You have a new message.",
"content-available": 1
},
"e": "new message",
"user": "john"
}
{
"notification": {
"title": "You have a new message."
},
"data" : {
"event": "new message",
"user": "john"
}
}
Платформы MPNS и WNS предоставляют toast, tile и raw уведомления, а в WNS есть дополнительный тип уведомлений -
badge.
Массив repack_payload в правилах задает содержимое raw уведомления. Укажите в правилах только те уведомлений,
которые нужно послать (например, только toast и raw).
Уведомление в MPNS и WNS
{
"payload": { "event": "new message", "user": "john" },
"repack": {
"mpns": {
"toast": {
"text1": "You have a new message.",
"text2": "More info."
},
"tile": {
"text1": "New message",
"background": "img",
"clear": ["text2", "image1"]
},
"repack_payload": ["event", "user"]
},
"wns": {
"toast": {
"visual": {
"binding": {
"template": "ToastImageAndText01",
"text": "You have a new message.",
"image": "img"
}
}
},
"tile": {
"visual": {
"binding": {
"template": "TileSquare150x150IconWithBadge",
"image": "string"
}
}
},
"badge": "playing",
"repack_payload": ["event", "user"]
}
}
}