Реализация открытия PWA на iOS за deep-link из WhatsApp
1. Общая информация
Проект создан на платформе Lovable.
Приложение работает как PWA (Progressive Web App) и устанавливается пользователями на iPhone через Safari ("Добавить на экран домой").
Необходимо реализовать механизм, при котором:
Пользователь получает сообщение в WhatsApp
В сообщении содержится URL с конкретным маршрутом (например:
https://domain.com/order/123)
При нажатии на ссылку:
если PWA установлен — открывается именно PWA,
и сразу открывается страница, соответствующая URL
если PWA не установлен — открывается веб-версия в Safari
2. Функциональные требования
2.1 Deep Linking
Реализовать корректную обработку deep-link в PWA на iOS:
Поддержка открытия маршрута типа:
/order/:id
/client/:id
другие внутренние маршруты (SPA-навигация)
При открытии через Safari или WhatsApp:
если приложение установлено через Home Screen → открывается PWA
маршрут не теряется
страница не редиректится на главную
2.2 Поведение при установленном PWA
Если пользователь уже установил PWA:
Ссылка из WhatsApp должна:
открывать именно установленное приложение
сохранять маршрут
корректно инициализировать состояние (auth, данные, токены)
2.3 Поведение при неавторизованном пользователе
Если пользователь не залогинен:
После открытия deep-link:
открывается страница логина
после успешной авторизации — редирект на первичный маршрут
3. Технические требования
3.1 PWA конфигурация
Проверить и при необходимости реализовать:
Корректный manifest.json
start_url
scope
display: standalone
HTTPS обязательно
Корректная работа Service Worker
Отсутствие полных перезагрузок страниц (SPA)
3.2 iOS специфика
Учитывать особенности iOS:
PWA открывается в отдельном standalone-контексте
Необходимо обеспечить:
правильную обработку window.location
корректную инициализацию роутера
сохранение параметров URL
3.3 Маршрутизация
Если используется:
Next.js / React Router / другой SPA роутер —
необходимо гарантировать:
работу прямого открытия маршрута
работу при обновлении страницы
работу через deep-link
4. Пример сценария
Статус заказа изменяется
Система отправляет WhatsApp сообщение с URL:
Копировать код
https://domain.com/order/4582
Пользователь нажимает ссылку
Если PWA установлен:
открывается PWA
открывается страница заказа №4582
Если PWA не установлен:
открывается веб-версия
5. Ожидаемый результат
PWA корректно открывается с deep-link на iOS
Маршрут не теряется
Не происходит редирект на главную
Авторизация сохраняется
Поведение стабильное при повторном открытии
6. Желательно
Тестирование на реальном iPhone
Проверка открытия с:
WhatsApp
Safari
Telegram
Учет edge-cases:
приложение в фоне
приложение полностью закрыто
истек токен