Своеобразная ошибка PWA в Safari IOS 13.1.2 - PullRequest
1 голос
/ 03 октября 2019

Я не знаю, относится ли это к последнему обновлению IOS 13, но у меня действительно странное поведение PWA. Когда я первоначально добавляю его на свой домашний экран, ссылки на странице открываются в Safari, а не встраиваются в PWA (кстати, ни одна из ссылок не установлена ​​на __blank), но когда я вхожу с помощью oAuth в safari, а затем добавляю его вмой домашний экран, он работает так, как должен, и работает нормально со ссылками. (В настоящее время используется Passport с Node и Express для аутентификации) Я не знаю, есть ли какая-то инфраструктура безопасности или что-то связанное с пакетами, но это действительно странно, и я хотел бы решить эту проблему как можно скорее, прежде чем моя пользовательская база будет расстроена.

Я пытался просмотреть мой манифест, но все соответствует спецификациям PWA. У меня установлен автономный дисплей, все мои теги настроены правильно, аудит Lighthouse также говорит, что он должен работать. Я просмотрел документы на паспорт, отследил свой код аутентификации, но, похоже, ничего не работает.

1 Ответ

1 голос
/ 15 октября 2019

Похоже, Apple изменила поведение домашнего экрана / автономного веб-приложения в iOS 13, но я не могу найти официальную документацию по этому вопросу. Теперь кажется, что если у вас не было настройки manifest.json до , когда веб-приложение было добавлено на домашний экран, оно рассматривает только начальную страницу как область действия автономного представления. Следовательно, любая другая ссылка / редирект открывается в другом окне или в браузере приложения.

У нас на домашних экранах установлено пользовательское веб-приложение, которое было написано несколько лет назад и функционировало до версии iOS 13 без манифеста. файл .json. Мне пришлось переписать код WebSQL в нашем приложении, чтобы использовать IndexedDB, поскольку они полностью исключили WebSQL из веб-приложений на домашнем экране в iOS 13, даже если WebSQL был повторно включен в расширенной настройке Safari. Когда я начинал тестировать на iPhone, любая ссылка или перенаправление, даже используя window.location.assign или любое количество других методов, всегда открывали следующую страницу в браузере приложения с минимальным пользовательским интерфейсом. Это также смешалось с геометрией страницы, поскольку то, что представляло собой страницу полной высоты без прокрутки, теперь можно было прокручивать с помощью элементов нашей кнопки «Далее», отодвинутых в нижней части экрана. Так как у нас есть несколько прокручиваемых панелей в середине некоторых страниц, было неочевидно, как добраться до конца страницы (нужно прокрутить фиксированный элемент, чтобы прокрутить всю страницу), чтобы это не сработало для наших пользователей. .

Короче говоря, добавление файла минимального файла manifest.json в веб-приложение (даже не требуется настройка scope ) и удаление и повторное добавление веб-приложения вПосле этого домашний экран заставляет его вести себя как прежде со всеми страницами, отображаемыми в автономном режиме. Добавление manifest.json к уже установленному приложению главного экрана не влияет на поведение.

...