Перейти к основному содержимому

API Push-уведомлений: Интеграция с RuStore, FCM, HMS и APNS

API разрабатывалось с целью предоставлять возможность отправки push-уведомлений через нескольких push-провайдеров одновременно.

Для отправки push-уведомления необходимо использовать метод POST https://vkpns-universal.rustore.ru/v1/send.

Чтобы отправить push-уведомление, укажите ID проекта и Авторизационный токен для каждого провайдера, по которому планируется отправка пуша.

Используйте project_id (ID проекта) и ss_token (сервисный токен). Эти значения вы можете получить в системе RuStore Консоль. Для этого на странице приложения перейдите в раздел Push-уведомления и выберите Проекты.

В качестве Авторизационного токена используйте сервисный токен.

Тело запроса

ПараметрТипОбязательноеОписание
providersobject (providers)даПровайдеры для отправки push-уведомлений.
tokensobject (tokens)даPush-токены по провайдерам.
messageobject (message)даСтруктура push-уведомления.

providers

ПараметрТипОбязательноеОписание
rustoreobject (provider)нетПровайдер RuStore.
fcmobject (provider)нетПровайдер Firebase.
hmsobject (provider)нетпровайдер Huawei.
apnsobject (provider)нетпровайдер APNS.

providers.provider

ПараметрТипОбязательноеОписание
project_idstringдаID проекта.
auth_tokenstringдаАвторизационный токен.

tokens

ПараметрТипОбязательноеОписание
rustorearray (string)нетPush-токены RuStore.
fcmarray (string)нетPush-токены Firebase.
hmsarray (string)нетPush-токены Huawei.
apnsarray (string)нетPush-токены APNS.

message

ПараметрТипОбязательноеОписание
datamapнетОбъект, содержащий пары "key": value.
notificationobject (message.notification)даБазовый шаблон уведомления для использования на всех платформах.
androidobject (message.android)тольков HMSСпециальные параметры Android для сообщений.

message.notification

ПараметрТипОбязательноеОписание
titlestringдаНазвание уведомления.
bodystringдаОсновной текст уведомления.
imagestringнетСодержит URL-адрес изображения, которое будет отображаться в уведомлении.

message.android

ПараметрТипОбязательноеОписание
ttlstring (duration format)нетКак долго (в секундах) сообщение должно храниться в хранилище.
Пример: 3.5s.
notificationobject (message.android.notification)только в HSMУведомление для отправки на устройства Android.

message.android.notification

ПараметрТипОбязательноеОписание
titlestringдаНазвание уведомления.
bodystringдаОсновной текст уведомления.
iconstringнетЗначок уведомления.
colorstringнетЦвет значка уведомления в формате #rrggbb.
imagestringнетСодержит URL-адрес изображения, которое будет отображаться в уведомлении.
channel_idstringнетИдентификатор канала уведомления.
click_actionstringнетДействие, связанное с кликом пользователя по уведомлению.
В HMS по дефолту стоит тип 1 (intent).
к сведению

В структуре message поддерживаются только представленные выше поля.

Тело успешного ответа

ПараметрТипОписание
statusstringВ случае успешного ответа возвращается сообщение со статусом OK.

Тело ошибки

ПараметрТипОписание
codeintЧисловой код ошибки (404, 400, 403, 401, ...).
statusstringОбщее описание ошибки.
errorsarray (string)Ошибки по провайдерам или ошибки валидации.

HTTP status соответствует полю code.

Ошибки делятся на три типа

  • Ошибки валидации сообщения.
  • Ошибки отправки по провайдерам.
  • Ошибки сервиса.

Возможные ошибки при отправке сообщения

  • VALIDATION_ERROR — неправильно указаны параметры запроса при отправке сообщения.
  • PROVIDER_ERROR — ошибка отправки в провайдер пушей.
  • INTERNAL_ERROR — внутренняя ошибка сервиса.

Возможные ошибки валидации при отправке сообщения

  • providers.%provider_name% — ошибка в провайдере.
  • tokens.%provider_name% — ошибка в токене провайдера.
  • message.%field% — ошибка в сообщении.

Возможные ошибки провайдеров при отправке сообщения, имеют формат %provider_name%: %error%

  • internal — внутренняя ошибка провайдера.
  • validation error — ошибка валидации на стороне провадейра.
  • invalid auth token — ошибка auth-токена.
  • too many requests — слишком много запросов.
  • invalid tokens — ошибка в push-токенах, будет список через запятую обрезанных токенов (первые 6 символов).

Алгоритм валидации

Провайдер обязан иметь токены.

providers

Должен быть хотя-бы один провайдер, без провайдеров запрос не валиден.

tokens

Должен быть хотя-бы один push-токен на провайдера.

Message

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

Ограничения

  • Если в уведомлении нет поля ttl или оно равно 0, то учитывается стандартное значение, равное 4 неделям. Если отсутствует секция message.android, то она добавляется с полем ttl.
  • Максимальный объем сообщения — 4096 байт.