Отправка push-уведомлений (API)
API для отправки push-уведомлений
API разрабатывалось с целью предоставлять возможность drop-in replacement для Firebase.
Для отправки push-уведомления используйте метод POST https://vkpns.rustore.ru/v1/projects/$project_id/messages:send.
Укажите ID проекта и Сервисный токен, чтобы отправить push-уведомление. Эти значения вы можете получить в RuStore консоли. Для этого на странице приложения перейдите в раздел Push-уведомления и выберите Проекты.
Сервисный токен нужно указывать в заголовке Authorization: Bearer {service-token}.
Тело запроса
| Параметр | Тип | Описание |
|---|---|---|
message | object (message) | Структура push-уведомления. |
message
| Параметр | Тип | Описание |
|---|---|---|
token | string | Push-токен пользователя, полученный в приложении. |
data | map | Объект, содержащий пары "key": value. |
notification | object (message.notification). | Базовый шаблон уведомления для использования на всех платформах. |
android | object (message.android) | Специальные параметры Android для сообщений. |
message.notification
| Параметр | Тип | Описание |
|---|---|---|
title | string | Название уведомления. |
body | string | Основной текст уведомления. |
image | string | Содержит URL-адрес изображения, которое будет отображаться в уведомлении. |
message.android
| Параметр | Тип | Описание |
|---|---|---|
ttl | string (duration format) | Как долго (в секундах) сообщение должно храниться в хранилище. Пример: 3.5s. |
notification | object (message.android.notification) | Уведомление для отправки на устройства Android. |
message.android.notification
| Параметр | Тип | Описание |
|---|---|---|
title | string | Название уведомления. |
body | string | Основной текст уведомления. |
icon | string | Значок уведомления. |
color | string | Цвет значка уведомления в формате #rrggbb. |
image | string | Содержит URL-адрес изображения, которое будет отображаться в уведомлении. |
channel_id | string | Идентификатор канала уведомления. |
click_action | string | Действие, связанное с кликом пользователя по уведомлению. |
click_action_type | int | Необязательное поле, тип click_action (значение по умолчанию 0 - click_action будет использоваться как intent action, 1 - click_action будет использоваться как deep link) |
Обратите внимание, для корректной работы deep link(click_action_type с установленным значением 1) версия RuStore должна быть не ниже 1.39.0
Если в структуре notification отсутствует поле title, то sdk не отобразит пуш уведомление
В структуре message на данный момент поддерживаются только представленные выше поля.
Тело успешного ответа
| Параметр | Тип | Описание |
|---|---|---|
| — | — | В случае успешного ответа возвращается сообщение с пустым payload. |
Тело ответа с ошибкой
| Параметр | Тип | Описание |
|---|---|---|
error | object (error) | Ошибка. |
error
| Параметр | Тип | Описание |
|---|---|---|
code | number | Числовой код ошибки (404, 400, 403, 401, ...). |
message | string | Детальное описание ошибки. |
status | string | Код ошибки в текстовом формате (INVALID_ARGUMENT, UNREGISTERED, ...). |
HTTP status соответствует полю code.
Возможные ошибки при отправке сообщения
INVALID_ARGUMENT— неправильно указаны параметры запроса при отправке сообщения.INTERNAL— внутренняя ошибка сервиса.TOO_MANY_REQUESTS— превышено количество попыток отправить сообщение.PERMISSION_DENIED— неправильно указан сервисный ключ.NOT_FOUND— неправильно указан push-токен пользователя.
Алгоритм валидации Message
- Если есть непустой
payloadmessage.data(есть хотя бы одна пара ключ-значение внутри), то сообщение валидно. Секцииmessage.notificationиmessage.androidмогут отсутствовать. - Если поля
message.dataнет, то обязательно должен бытьnotification. В этом случае проверяется наличие либо поляmessage.notification, либоmessage.android.notification. Хотя бы одно из этих полей должно присутствовать, но могут присутствовать оба (если присутствуют оба, то некоторые поля перезаписываются).
Ограничения
- Если в push нет поля
ttlили оно равно0, то учитывается значение по умолчанию, равное 4 неделям. Если в push отсутствует секцияmessage.android, она добавляется с полемttl. - Максимальный объем сообщения 4096 байт.