Отправка 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
В структуре 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
- Если есть непустой
payload
message.data
(есть хотя бы одна пара ключ-значение внутри), то сообщение валидно. Секцииmessage.notification
иmessage.android
могут отсутствовать. - Если поля
message.data
нет, то обязательно должен бытьnotification
. В этом случае проверяется наличие либо поляmessage.notification
, либоmessage.android.notification
. Хотя бы одно из этих полей должно присутствовать, но могут присутствовать оба (если присутствуют оба, то некоторые поля перезаписываются).