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

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.

Тело ошибки​

ПараметрТипОписание
codenumberЧисловой код ошибки (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 байт.