Отправка пуш-уведомлений
API разрабатывалось с целью предоставлять возможность drop-in replacement для Firebase.
Для отправки пуш-уведомления используйте метод POST https://vkpns.rustore.ru/v1/projects/$project_id/messages:send.
Укажите «ID проекта» и «Сервисный токен», чтобы отправить пуш-уведомление. Эти значения вы можете получить в системе RuStore Консоль. Для этого на странице приложения перейдите в раздел «Push-уведомления» и выберите «Проекты».
Сервисный токен нужно указывать в заголовке «Authorization: Bearer {service-token}».
Тело запроса
Параметр |
Тип |
Описание |
---|---|---|
validate_only |
bool |
Произвести валидацию запроса, не отправляя пуш-уведомление |
message |
object (message) |
Структура пуш-уведомления |
message
Параметр |
Тип |
Описание |
---|---|---|
token |
string |
Пуш токен пользователя, полученный в приложении |
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 |
Действие, связанное с кликом пользователя по уведомлению |
В структуре message на данный момент поддерживаются только представленные выше поля.
Тело успешного ответа
Параметр |
Тип |
Описание |
---|---|---|
— |
— |
В случае успешного ответа возвращается сообщение с пустым payload |
Тело ответа ошибки
Параметр |
Тип |
Описание |
---|---|---|
error |
object (error) |
Ошибка |
error
Параметр |
Тип |
Описание |
---|---|---|
code |
int |
Числовой код ошибки (404, 400, 403, 401, ...) |
message |
string |
Детальное описание ошибки |
status |
string |
Код ошибки в текстовом формате (INVALID_ARGUMENT, UNREGISTERED, ...) |
HTTP status соответствует полю code.
Возможные ошибки при отправке сообщения:
INVALID_ARGUMENT
— неправильно указаны параметры запроса при отправке сообщения.INTERNAL
— внутренняя ошибка сервиса.TOO_MANY_REQUESTS
— превышено количество попыток отправить сообщение.PERMISSION_DENIED
— неправильно указан сервисный ключ.NOT_FOUND
— неправильно указан пуш токен пользователя.
Алгоритм валидации Message
- Если есть непустой payload message.data (есть хотя бы одна пара ключ-значение внутри), то сообщение валидно. Секции message.notification и message.android могут отсутствовать.
- Если поля message.data нет, то обязательно должен быть notification. В этом случае проверяется наличие либо поля message.notification, либо message.android.notification. Хотя бы одно из этих полей должно присутствовать, но могут присутствовать оба (если присутствуют оба, то некоторые поля перезаписываются).
Ограничения
- Если в пуше нет поля ttl или оно равно 0, то учитывается дефолтное значение равное 4 неделям. Если в пуше отсутствует секция message.android, то она добавляется с полем ttl.
- Максимальный объем сообщения 4096 байт.