От установки к проверенному уведомлению
  1. Среда

    Система и режим запуска

  2. Разрешение

    Действие пользователя

  3. Подписка

    Связь с текущим аккаунтом

  4. Переход

    Нужный заказ без утечки

Если PWA на iPhone не устанавливается или не получает push, сначала проверьте версию системы, способ запуска и разрешение уведомлений. Открытая вкладка, ярлык сайта и установленное веб-приложение — разные состояния. Сам факт появления иконки ещё не подтверждает работу подписки и доставки сообщений.

Что известно о поддержке

В документации WebKit поддержка Web Push для добавленных на главный экран веб-приложений описана начиная с iOS и iPadOS 16.4. Запрос разрешения связан с непосредственным действием пользователя. Это не обещание доставки любого сообщения на любой iPhone: остаются настройки устройства, браузерная среда и состояние подписки.

MDN отдельно отмечает различия установки и отсутствие поддержки beforeinstallprompt на iOS. Поэтому нельзя копировать Android-сценарий с одной кнопкой без проверки. Условия сверены 24 октября 2026 года; при выпуске проекта проверяют актуальную матрицу устройств.

Проверка установки по шагам

  1. Откройте нужный HTTPS-адрес вне встроенного окна мессенджера.
  2. Проверьте доступный способ добавления на главный экран через меню браузера.
  3. Запустите сервис по созданной иконке.
  4. Проверьте начальный экран, вход и переход к нужному разделу.
  5. Сравните поведение после закрытия и повторного запуска.

Параметры Web App Manifest описывают приложение, но не дают ему права доступа к уведомлениям. Проверяйте адрес файла, содержимое, область запуска и иконки. Ошибка в start_url может отправлять пользователя не в тот раздел или создавать лишний вход.

Учебная матрица диагностики push

Учебная матрица проверки уведомлений
НаблюдениеЧто проверитьЧто не считать доказательством
Нет предложения разрешить уведомленияРежим запуска, поддержка API, действие пользователя, прежний отказНаличие красивой кнопки «Подписаться»
Разрешение есть, сообщения нетТекущую подписку, ответ сервиса отправки, настройки уведомленийОдин успешный HTTP-ответ приложения
Сообщение открывает главнуюМаршрут и обработку перехода к заказуПолучение уведомления без проверки нажатия
Приходит информация о чужом заказеСвязь подписки с аккаунтом и выход пользователяРаботу на одном тестовом аккаунте

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

Проверьте Service Worker и обновление

Service Worker участвует в фоновых сценариях и управлении кешем. Его наличие не означает, что сервер отправки настроен, подписка сохранена и обработчик клика правильно открывает заказ. Эти звенья проверяют отдельно.

При новой версии сравните запуск у пользователя со старым кешем и при чистой установке. Карточку товара можно сохранить для просмотра, но итоговую цену и остаток при оформлении нужно подтвердить по актуальным данным. Для личных сведений определите правила очистки при выходе; не кешируйте всё подряд.

Как оформить ошибку для разработчика

Запишите модель устройства, версию iOS, браузер, адрес, способ установки, состояние разрешения и точное время попытки. Опишите последовательность: «запустил с главного экрана → вошёл → нажал подписку → разрешил → сообщение не пришло». Не передавайте публично токены подписки и личные данные.

Вместо серии случайных повторных запросов подготовьте одну воспроизводимую проверку. Разрешение пользователя, приём сообщения сервисом и показ на устройстве — разные результаты. Их нельзя объединять одной отметкой «уведомления работают».

Как локализовать причину и повторить проверку

Отделите проблему подписки от проблемы перехода

Начните с состояния пользователя: открыт ли правильный аккаунт и разрешены ли уведомления для этого веб-приложения. Затем проверьте наличие актуальной подписки в системе отправки. Отсутствие записи и отказ сервиса доставки — разные причины, для которых нужны разные исправления. В журнале сохраняйте безопасный идентификатор проверки, а не публикуйте весь токен.

Если уведомление появилось, нажмите на него и проверьте конечное содержимое. Для закрытого заказа может потребоваться вход; после него должно сохраниться исходное назначение. Не считайте переход успешным только потому, что открылось любое окно. Проверяйте также удалённый заказ и утраченное право доступа.

Не лечите все ошибки полной очисткой данных

Удаление веб-приложения и повторная установка могут изменить состояние, но скрывают причину. Сначала запишите наблюдения и сравните прежнюю установку с новой. Если проблема возникает только после обновления, проверьте жизненный цикл кеша, совместимость обработчиков и правила актуализации подписки.

Полная очистка может удалить незавершённые действия и настройки пользователя. Если такой шаг действительно нужен, объясните последствия и способ восстановления. Для проектной приёмки важно получить воспроизводимое исправление, а не инструкцию всем клиентам регулярно переустанавливать сервис.

Добавьте проверку сообщения о статусе

В учебном заказе измените статус на сервере и убедитесь, что кабинет показывает его независимо от push. Затем проверьте несколько сообщений об одном событии: пользователь не должен принять технический повтор за новый заказ. При выходе и смене аккаунта повторите ту же последовательность.

В итоговом протоколе запишите отдельные результаты: подписка создана, отправка принята, уведомление показано, переход открыл нужный объект. Неудача одного шага не отменяет результаты остальных и не позволяет объявить поддержку всей системы отсутствующей. Такая детализация помогает разработчику исправить нужное звено и повторно проверить его без реальных клиентских заявок.

Частые ошибки

  • Проверять push только во вкладке, а не в нужном режиме веб-приложения.
  • Повторно просить разрешение без объяснения ценности.
  • Считать отсутствие мгновенного сообщения доказательством несовместимости всей PWA.
  • Обновлять кеш без проверки авторизации и персональных данных.

Частые вопросы

PWA работает полностью без интернета?

Только в специально подготовленных сценариях. Просмотр сохранённой инструкции и подтверждение нового заказа требуют разных правил.

Можно гарантировать доставку push?

Нет: результат зависит и от условий вне приложения. Для важных операций оставляйте доступный статус в кабинете и согласованный резервный канал связи.

С чего начать исправление?

С воспроизводимого случая и проверки цепочки. Если проект уже работает, можно обсудить поддержку приложения; если только планируется — разработку PWA с нужными критериями приёмки.