Провайдеры: структура push-сообщения
Altcraft Platform поддерживает следующие сервисы для отправки мобильных push-сообщений:
- Google Firebase Cloud Messaging — для Android и iOS приложений
- Apple Push Notification Service — только для iOS приложений
- Yandex.AppMetrica — для Android и iOS приложений
- Huawei Mobile Services — для Android и iOS приложений
- RuStore — для Android приложений
Требуется подключение соответствующих SDK в приложении.
Yandex.AppMetrica использует для отправки SDK Google Firebase. Для отправки уведомлений вам нужно будет установить его в приложение.
В Altcraft Platform доступна интеграция с Yandex.AppMetrica для импорта профилей пользователей, регистрации их действий и связанной с ними ценности (стоимости).
Необходимо проверить, что приложение поддерживает структуру push-уведомлений Altcraft Platform. Если формат не поддерживается, Altcraft может скорректировать структуру сообщения со своей стороны.
Формат отправки push сообщения
Android Firebase
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft.
{
"message": {
"token": "{{.SubscriptionID}}",
"android": {
"priority": "{{.Priority}}",
"ttl": {{.TTL}},
"data": {
"_ac_push": "Altcraft",
"_uid": "{{.UID}}",
"_launch_id": "{{.LaunchID}}",
"_title": "{{.Title}}",
"_provider": "{{.Provider}}",
"_body": "{{.Body}}",
"_icon": "{{.Icon}}",
"_click_action": "{{.ClickURL}}",
"_color": "{{.ImageBackgroundColor}}",
"_image": "{{.Image}}",
"_vibration": "{{.Vibration}}",
"_soundless": "{{.Soundless}}",
"_hub_link": "{\"open\": \"{{.URLOpenEvent}}\", \"ack\": \"{{.URLDelivEvent}}\"}",
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
}
}
}
}
| Поле | Описание |
|---|---|
token | Push-токен устройства, полученный от FCM. Уникален для каждого устройства и приложения. |
android.priority | Приоритет доставки: HIGH или NORMAL. Определяет, будет ли устройство пробуждено для получения сообщения. |
android.ttl | Время жизни сообщения в секундах (TTL — Time To Live). После истечения срока сообщение не доставляется. Значение задаётся в настройках аккаунта. |
data._ac_push | Маркер отправки. Всегда содержит значение "Altcraft". Используется приложением для идентификации push от Altcraft Platform. |
data._uid | Уникальный идентификатор сообщения (SendMessageID). Содержит закодированные данные: аккаунт, кампанию, ресурс, канал, профиль, подписку, временную метку и контрольную сумму. Пример: T2k3mN8vR4pQ1xY7zL5wJ9hF6dA0bC. |
data._launch_id | Идентификатор отправки в рамках рассылки. Содержит accountID, campaignID и временную метку запуска, закодированные в base58. Пример: 123_456_aBcDeFgHiJkLmNoPqRsTuVwXyZ. Все сообщения одной рассылки имеют одинаковый launch_id. |
data._title | Заголовок push-уведомления. Отображается в шторке уведомлений. |
data._provider | Идентификатор провайдера. Для этого провайдера: Android Firebase. |
data._body | Тело push-уведомления. Основной текст сообщения. |
data._icon | URL иконки уведомления. Отображается рядом с текстом в шторке. |
data._click_action | URL, который открывается при нажатии на уведомление. Может быть обычной ссылкой или deeplink. |
data._color | Цвет фона иконки в формате hex (например, #FF5722). |
data._image | URL изображения-баннера. Отображается как большое изображение в расширенном уведомлении. |
data._vibration | Флаг принудительной вибрации: true или false. |
data._soundless | Флаг беззвучного уведомления: true или false. При true звук отключён. |
data._hub_link | JSON-объект с двумя URL для трекинга событий: open — ссылка для регистрации события открытия, ack — ссылка для регистрации события доставки. Ссылки зашифрованы и уникальны для каждого сообщения. |
data._buttons | JSON-массив кнопок действия. Каждая кнопка содержит label (текст) и link (URL). Формируется из кнопок, добавленных в настройках сообщения. |
_uid — уникальный идентификатор сообщения (SendMessageID). Содержит закодированные данные об аккаунте, кампании, ресурсе, канале, профиле, подписке и временной метке. Каждый push имее т свой уникальный _uid.
_launch_id — идентификатор отправки в рамках рассылки. Все сообщения одной рассылки имеют одинаковый launch_id. Содержит accountID, campaignID и временную метку запуска.
iOS Firebase
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"message": {
"token": "{{.SubscriptionID}}",
"apns": {
"headers": {
"apns-expiration": "{{.TTL}}"
},
"payload": {
"aps": {
"category": "Altcraft",
"sound": {{.Sound}},
"mutable-content": 1,
"alert": {
"title": "{{.Title}}",
"subtitle": "{{.SubTitle}}",
"body": "{{.Body}}"
}
},
"_uid": "{{.UID}}",
"_provider": "{{.Provider}}",
"_launch_id": "{{.LaunchID}}",
"_ac_push": "Altcraft",
"_click-url": "{{.ClickURL}}",
"_media": "{{.Media}}",
"_soundless": "{{.Soundless}}",
"_hub_link": "{\"open\": \"{{.URLOpenEvent}}\", \"ack\": \"{{.URLDelivEvent}}\"}",
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
}
}
}
}
| Поле | Описание |
|---|---|
token | Push-токен устройства, полученный от APNs через FCM. Уникален для каждого устройства и приложения. |
apns.headers.apns-expiration | Время жизни сообщения в секундах. После истечения срока APNs не доставляет сообщение. |
apns.payload.aps.category | Категория уведомл ения. Всегда "Altcraft". Используется для определения действий, доступных при нажатии. |
apns.payload.aps.sound | Звук уведомления. По умолчанию: "default". При беззвучном режиме — пустая строка. Может содержать имя файла звука в приложении. |
apns.payload.aps.mutable-content | Всегда 1. Разрешает Content-Extension для модификации уведомления (например, загрузка изображения). |
apns.payload.aps.alert.title | Заголовок push-уведомления. |
apns.payload.aps.alert.subtitle | Подзаголовок уведомления. Отображается под заголовком. |
apns.payload.aps.alert.body | Тело push-уведомления. Основной текст сообщения. |
apns.payload._uid | Уникальный идентификатор сообщения (SendMessageID). Аналогичен _uid в Android. |
apns.payload._provider | Идентификатор провайдера. Для этого провайдера: iOS Firebase. |
apns.payload._launch_id | Идентификатор отправки в рамках рассылки. |
apns.payload._ac_push | Маркер отправки. Всегда "Altcraft". |
apns.payload._click-url | URL, который открывается при нажатии на уведомление. |
apns.payload._media | URL изображения для rich-уведомления. |
apns.payload._soundless | Флаг беззвучного уведомления: true или false. |
apns.payload._hub_link | JSON-объект с URL для трекинга событий: open (открытие) и ack (доставка). |
apns.payload._buttons | JSON-массив кнопок действия с label и link. |
_uid — уникальный идентификатор сообщения (SendMessageID).
_launch_id — идентификатор отправки в рамках рассылки.
iOS APNS
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"aps": {
"category": "Altcraft",
"mutable-content": 1,
"sound": {{.Sound}},
"alert": {
"title": "{{.Title}}",
"subtitle": "{{.SubTitle}}",
"body": "{{.Body}}"
}
},
"_ac_push": "Altcraft",
"_click-url": "{{.ClickURL}}",
"_soundless": "{{.Soundless}}",
"_media": "{{.Media}}",
"_uid": "{{.UID}}",
"_provider": "{{.Provider}}",
"_hub_link": {
"open": "{{.URLOpenEvent}}",
"ack": "{{.URLDelivEvent}}"
},
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
}
| Поле | Описан ие |
|---|---|
aps.category | Категория уведомления. Всегда "Altcraft". |
aps.mutable-content | Всегда 1. Разрешает Content-Extension. |
aps.sound | Звук уведомления. По умолчанию: "default". |
aps.alert.title | Заголовок уведомления. |
aps.alert.subtitle | Подзаголовок уведомления. |
aps.alert.body | Тело уведомления. |
_ac_push | Маркер отправки. Всегда "Altcraft". |
_click-url | URL для открытия при нажатии. |
_soundless | Флаг беззвучного уведомления. |
_media | URL изображения для rich-уведомления. |
_uid | Уникальный идентификатор сообщения (SendMessageID). |
_provider | Идентификатор провайдера: iOS APNS. |
_hub_link.open | URL для регистрации события открытия. |
_hub_link.ack | URL для регистрации события доставки. |
_buttons | JSON-массив кнопок действия. |
AppMetrica iOS
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"push_batch_request": {
"group_id": 97737,
"tag": "tag",
"batch": [
{
"messages": {
"iOS": {
"silent": true/false,
"content": {
"title": "Title",
"text": "Body",
"badge": 0-999,
"expiration": 0,
"data": "{\"hub_link\":{\"ack\":\"URLDelivEvent\",\"open\":\"URLOpenEvent\"},\"icon\":\"Icon\",\"media\":\"Media\"}"
},
"open_action": {
"url": "URL",
"deeplink": "Deeplink"
}
}
},
"devices": [
{
"id_values": ["SubscriptionID"],
"id_type": "ios_push_token"
}
]
}
]
}
}
| Поле | Описание |
|---|---|
push_batch_request.group_id | Идентификатор группы в AppMetrica. Задаётся при настройке канала. |
push_batch_request.tag | Метка рассылки. Используется для группировки отправок в AppMetrica. |
push_batch_request.batch | Массив сообщений для отправки. |
messages.iOS.silent | Флаг silent-push: true — фоновая доставка без уведомления, false — стандартное уведомление. |
messages.iOS.content.title | Заголовок уведомления. |
messages.iOS.content.text | Тело уведомления. |
messages.iOS.content.badge | Счётчик бейджа приложения. Диапазон: 0–999. |
messages.iOS.content.expiration | Время жизни сообщения в секундах. 0 — сообщение не хранится при недоступности устройства. |
messages.iOS.content.data | JSON-строка с дополнительными данными: hub_link (трекинг), icon (иконка), media (изображение). |
messages.iOS.open_action.url | URL для открытия при нажатии (обычная ссылка). |
messages.iOS.open_action.deeplink | Deeplink для открытия при нажатии. |
devices.id_values | Массив push-токенов устройств. |
devices.id_type | Тип идентификатора: ios_push_token для iOS. |
В AppMetrica iOS поля _uid и _launch_id не передаются напрямую в структуре сообщения. Трекинг осуществляется через hub_link внутри поля data.
AppMetrica Android
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"push_batch_request": {
"group_id": 97737,
"tag": "tag",
"batch": [
{
"messages": {
"android": {
"silent": true/false,
"content": {
"title": "Title",
"text": "Body",
"time_to_live": 0,
"image": "Icon",
"icon_background": "IconBackground",
"banner": "Banner",
"led_color": "LEDColor",
"data": "{\"hub_link\":{\"ack\":\"URLDelivEvent\",\"open\":\"URLOpenEvent\"}}"
},
"open_action": {
"url": "URL",
"deeplink": "Deeplink"
}
}
},
"devices": [
{
"id_values": ["SubscriptionID"],
"id_type": "google_aid"
}
]
}
]
}
}
| Поле | Описание |
|---|---|
push_batch_request.group_id | Идентификатор группы в AppMetrica. |
push_batch_request.tag | Метка рассылки. |
push_batch_request.batch | Массив сообщений для отправки. |
messages.android.silent | Флаг silent-push. |
messages.android.content.title | Заголовок уведомления. |
messages.android.content.text | Тело уведомления. |
messages.android.content.time_to_live | Время жизни сообщения в секундах. |
messages.android.content.image | URL иконки уведомления. |
messages.android.content.icon_background | Цвет фона иконки в формате hex. |
messages.android.content.banner | URL баннерного изображения. |
messages.android.content.led_color | Цвет LED-индикатора в формате hex. |
messages.android.content.data | JSON-строка с данными трекинга: hub_link содержит URL для событий ack (доставка) и open (открытие). |
messages.android.open_action.url | URL для открытия при нажатии. |
messages.android.open_action.deeplink | Deeplink для открытия при нажатии. |
devices.id_values | Массив идентификаторов устройств (Google AID). |
devices.id_type | Тип идентификатора: google_aid для Android. |
В AppMetrica Android поля _uid и _launch_id не передаются напрямую в структуре сообщения. Трекинг осуществляется через hub_link внутри поля data.
HMS Android
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"message": {
"token": ["{{.SubscriptionID}}"],
"data": {
"_ac_push": "Altcraft",
"_title": "{{.Title}}",
"_uid": "{{.UID}}",
"_provider": "{{.Provider}}",
"_body": "{{.Body}}",
"_launch_id": "{{.LaunchID}}",
"_vibration": "{{.Vibration}}",
"_soundless": "{{.Soundless}}",
"_hub_link": "{\"open\": \"{{.URLOpenEvent}}\", \"ack\": \"{{.URLDelivEvent}}\"}",
"_icon": "{{.Icon}}",
"_click_action": "{{.ClickURL}}",
"_color": "{{.ImageBackgroundColor}}",
"_image": "{{.Image}}",
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
},
"android": {
"urgency": "HIGH",
"ttl": {{.TTL}}
}
}
}
| Поле | Описание |
|---|---|
message.token | Массив push-токенов устройств HMS. В отличие от Firebase, токен передаётся как массив. |
data._ac_push | Маркер отправки. Всегда "Altcraft". |
data._title | Заголовок уведомления. |
data._uid | Уникальный идентификатор сообщения (SendMessageID). |
data._provider | Идентификатор провайдера: Android HMS. |
data._body | Тело уведомления. |
data._launch_id | Идентификатор отправки в рамках рассылки. |
data._vibration | Флаг принудительной вибрации. |
data._soundless | Флаг беззвучного уведомления. |
data._hub_link | JSON-объект с URL для трекинга: open и ack. |
data._icon | URL иконки уведомления. |
data._click_action | URL для открытия при нажатии. |
data._color | Цвет фона иконки в формате hex. |
data._image | URL изображения-баннера. |
data._buttons | JSON-массив кнопок действия. |
android.urgency | Срочность доставки. Всегда HIGH. |
android.ttl | Время жизни сообщения в секундах. |
HMS iOS
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"message": {
"token": ["{{.SubscriptionID}}"],
"apns": {
"headers": {
"apns-expiration": "{{.TTL}}"
},
"payload": {
"aps": {
"category": "Altcraft",
"mutable-content": 1,
"sound": {{.Sound}},
"alert": {
"title": "{{.Title}}",
"subtitle": "{{.SubTitle}}",
"body": "{{.Body}}"
}
},
"_ac_push": "Altcraft",
"_provider": "{{.Provider}}",
"_click-url": "{{.ClickURL}}",
"_soundless": "{{.Soundless}}",
"_uid": "{{.UID}}",
"_media": "{{.Media}}",
"_hub_link": {
"open": "{{.URLOpenEvent}}",
"ack": "{{.URLDelivEvent}}"
},
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
},
"hms_options": {
"target_user_type": 1
}
}
}
}
| Поле | Описание |
|---|---|
message.token | Массив push-токенов устройств HMS. |
apns.headers.apns-expiration | Время жизни сообщения в секундах. |
apns.payload.aps.category | Категория уведомления. Всегда "Altcraft". |
apns.payload.aps.mutable-content | Всегда 1. Разрешает Content-Extension. |
apns.payload.aps.sound | Звук уведомления. |
apns.payload.aps.alert.title | Заголовок уведомления. |
apns.payload.aps.alert.subtitle | Подзаголовок уведомления. |
apns.payload.aps.alert.body | Тело уведомления. |
apns.payload._ac_push | Маркер отправки. |
apns.payload._provider | Идентификатор провайдера: iOS HMS. |
apns.payload._click-url | URL для открытия при нажатии. |
apns.payload._soundless | Флаг беззвучного уведомления. |
apns.payload._uid | Уникальный идентификатор сообщения (SendMessageID). |
apns.payload._media | URL изображения для rich-уведомления. |
apns.payload._hub_link.open | URL для регистрации события открытия. |
apns.payload._hub_link.ack | URL для регистрации события доставки. |
apns.payload._buttons | JSON-массив кнопок действия. |
apns.hms_options.target_user_type | Тип целевого пользователя в HMS. Всегда 1. |
RuStore Android
Возможно редактирование объекта JSON (по запросу).
Поддерживается добавление дополнительных данных в объект data. Это можно сделать для каждой отправки персонально в настройках сообщения Altcraft MP.
{
"message": {
"token": "{{.SubscriptionID}}",
"data": {
"_ac_push": "Altcraft",
"_title": "{{.Title}}",
"_uid": "{{.UID}}",
"_provider": "{{.Provider}}",
"_body": "{{.Body}}",
"_icon": "{{.Icon}}",
"_image": "{{.Image}}",
"_launch_id": "{{.LaunchID}}",
"_vibration": "{{.Vibration}}",
"_soundless": "{{.Soundless}}",
"_color": "{{.ImageBackgroundColor}}",
"_click_action": "{{.ClickURL}}",
"_hub_link": "{\"open\": \"{{.URLOpenEvent}}\", \"ack\": \"{{.URLDelivEvent}}\"}",
"_buttons": "[{{ range $index, $button := .Actions }}{{if $index}},{{end}}{\"label\":\"{{$button.Label}}\",\"link\":\"{{$button.Link}}\"}{{ end }}]"
},
"android": {
"priority": "HIGH",
"ttl": {{.TTL}}
}
}
}
| Поле | Описание |
|---|---|
message.token | Push-токен устройства RuStore. |
data._ac_push | Маркер отправки. Всегда "Altcraft". |
data._title | Заголовок уведомления. |
data._uid | Уникальный идентификатор сообщения (SendMessageID). |
data._provider | Идентификатор провайдера: Android RuStore. |
data._body | Тело уведомления. |
data._icon | URL иконки уведомления. |
data._image | URL изображения-баннера. |
data._launch_id | Идентификатор отправки в рамках рассылки. |
data._vibration | Флаг принудительной вибрации. |
data._soundless | Флаг беззвучного уведомления. |
data._color | Цвет фона иконки в формате hex. |
data._click_action | URL для открытия при нажатии. |
data._hub_link | JSON-объект с URL для трекинга: open и ack. |
data._buttons | JSON-массив кнопок действия. |
android.priority | Приоритет доставки. Всегда HIGH. |
android.ttl | Время жизни сообщения в секундах. |
_uid — уникальный идентификатор сообщения (SendMessageID).
_launch_id — идентификатор отправки в рамках рассылки.
Общие поля всех провайдеров
Ниже описаны поля, которые присутствуют в структуре push-сообщений Altcraft Platform независимо от провайдера.
Идентификаторы
| Поле | Описание |
|---|---|
_uid | SendMessageID — уникальный идентификатор каждого отправленного сообщения. Содержит закодированные данные: идентификаторы аккаунта, кампании, ресурса, канала, профиля, подписки, временную метку отправки и контрольную сумму. Начинается с префикса версии: T (Full), U (Unique), E (Email). Пример: T2k3mN8vR4pQ1xY7zL5wJ9hF6dA0bC. |
_launch_id | Идентификатор отправки в рамках рассылки. Все сообщения одной рассылки имеют одинаковый launch_id. Содержит accountID, campaignID и временную метку запуска, закодированные в base58 (Flickr alphabet). Формат: accountID_campaignID_timestamp. Пример: 123_456_aBcDeFgHiJkLmNoPqRsTuVwXyZ. |
_ac_push | Маркер отправки от Altcraft Platform. Всегда содержит значение "Altcraft". Используется приложением для идентификации push-уведомлений от платформы. |
_provider | Идентификатор провайдера, через который отправлено сообщение. Примеры: Android Firebase, iOS Firebase, iOS APNS, Android HMS, Android RuStore. |
Контент уведомления
| Поле | Описание |
|---|---|
_title / title | Заголовок push-уведомления. Отображается в шторке уведомлений устройства. |
_body / text / body | Тело push-уведомления. Основной текст сообщения. |
_subtitle / subtitle | Подзаголовок уведомления. Доступен только для iOS. Отображается под заголовком. |
_icon / image | URL иконки уведом ления. Отображается рядом с текстом в шторке. |
_image / banner / _media | URL изображения-баннера. Отображается как большое изображение в расширенном уведомлении. |
_click_action / _click-url / url | URL, который открывается при нажатии на уведомление. Может быть обычной ссылкой или deeplink. |
_color / icon_background | Цвет фона иконки в формате hex (например, #FF5722). |
Управление доставкой
| Поле | Описание |
|---|---|
ttl / apns-expiration / time_to_live / expiration | Время жизни сообщения в секундах (TTL — Time To Live). После истечения срока сообщение не доставляется. Значение задаётся в настройках аккаунта. |
priority / urgency | Приоритет доставки: HIGH или NORMAL. Определяет, будет ли устройство пробуждено для получения сообщения. |
_soundless / silent | Флаг беззвучного уведомления: true — звук отключён, false — стандартный звук. |
_vibration | Флаг принудительной вибрации (Android): true или false. |
sound | Звук уведомления (iOS). По умолчанию: "default". Может содержать имя файла звука в приложении. |
Трекинг событий
| Поле | Описание |
|---|---|
_hub_link | JSON-объект с двумя зашифрованными URL для трекинга событий доставки. Каждый URL уникален для конкретного сообщения и подписки. |
_hub_link.open | URL для регистрации события открытия push-уведомления. Срабатывает, когда пользователь нажимает на уведомление. |
_hub_link.ack | URL для регистрации события доставки push-уведомления. Срабатывает, когда push-сервис подтверждает доставку на устройство. |