WebSocket и push

Состояние заказа

Покупатель подключается к /ws/orders/tracking/ по WSS. JWT можно передать заголовком Authorization: Bearer <ACCESS_TOKEN>. Для клиентов без поддержки заголовков доступен параметр access_token; не записывайте такой URL в журналы. Неавторизованное или неактивное соединение закрывается с кодом 1008.

order.changed сообщает об изменении заказа и содержит event_id, order_id и order_version. Дубликаты события и старые версии игнорируются. После подключения, переподключения или пропуска версии перечитайте /api/orders/roadmap/{order_id}/detail. Событие не заменяет этот HTTP-снимок.

delivery.tracking.changed сообщает об изменении доставки. Соответствующие ему push и WebSocket могут иметь одинаковые notification_id и event_id: объединяйте повторные запросы detail и не показывайте два оповещения об одном событии. Правила отображения отменённой доставки описаны в сценарии заказа.

Для сборщика параметры событий и область очереди получаются через /api/picker/realtime/metadata; основное состояние восстанавливается HTTP-методами сессии и очереди. Разрыв соединения не подтверждает результат команды.

Регистрация push

После разрешения уведомлений зарегистрируйте текущую установку через PUT /api/accounts/me/push-devices. Поля см. в справочнике. device_id — локально сохранённый случайный UUID установки, а не аппаратный идентификатор устройства. При смене FCM-токена повторите PUT для той же установки.

Передавайте окружение, соответствующее API; несовпадение возвращает 409. При выходе или отключении push удаляйте только текущую установку через DELETE /api/accounts/me/push-devices/{device_id} до удаления токена авторизации.

Данные push служат для выбора экрана и повторного чтения HTTP. Дедуплицируйте уведомления по notification_id, если он есть. После открытия уведомления сначала проверьте вход и получите доступный текущему пользователю заказ.

Изображение в рекламном уведомлении необязательно. Если загрузка не удалась, покажите текстовое уведомление. Успешная регистрация устройства и приём сообщения FCM не доказывают видимое получение: отдельно проверяйте получение и переход по нажатию при открытом, фоновом и завершённом приложении на целевых устройствах.


Версия: a0f83a6f89d582854b126a89a7623bb1d484a004 · TEST. Markdown