Сервисные рабочие недоступны в WKWebView в iOS 11.3
Сервисные работники были доступны в WKWebView
в бета-версиях iOS 11.3, но, по-видимому, недоступны в финальной версии GM для iOS 11.3.
Кто-нибудь знает, как повторно включить Service Workers в WKWebView
на iOS?
1 ответ
Сервисные работники в WKWebView
Теперь требуется право:
com.apple.developer.WebKit.ServiceWorkers
, который должен быть добавлен к .entitlements
Плист как Boolean
со значением YES
,
В настоящее время это будет работать только в iOS Simulator до тех пор, пока Apple не обновит портал Apple Developer Portal, чтобы можно было создавать идентификаторы приложений и профили обеспечения, содержащие это право.
Для получения дополнительной информации см. Эту ошибку: https://bugs.webkit.org/show_bug.cgi?id=182865 и связанный набор изменений: https://trac.webkit.org/changeset/228933/webkit
Это право теперь доступно в iOS 14 (com.apple.developer.web-browser). В связи с тем, что Apple теперь позволяет использовать другие браузеры по умолчанию, доступно новое разрешение, которое также включает сервисных работников!!!
Обновленную документацию можно найти здесь:Apple Docs
Следующая интересная часть:
Использование возможностей браузера по умолчанию
- Приложения, использующие управляемое право com.apple.developer.web-browser, могут:
- Возможность выбора пользователем в качестве браузера по умолчанию.
- Загружать страницы со всех доменов с полным доступом к скриптам.
- Используйте Service Workers в экземплярах WKWebView.
Но у этого есть большие недостатки. Универсальные ссылки больше не работают, и есть список запрещенных ключей для info.plist (см. Ссылку).
Может ли кто-нибудь уже подтвердить наличие WKWebview, используя это право в магазине приложений?
ОБНОВИТЬ:
Лучшим решением может быть использование доменов, привязанных к приложениям.
Это работает до 10 доменов, и вы ограничиваете свой WKWebview этими доменами! Это не сработает для других сайтов. Вам не обязательно владеть доменом.
Добавьте к вам WKWebviewConfiguration:
let configuration = WKWebViewConfiguration()
configuration.limitsNavigationsToAppBoundDomains = true
В свой информационный лист добавьте ключ с WKAppBoundDomains:
<key>WKAppBoundDomains</key>
<array>
<string>example.com</string>
<string>example2.com</string>
</array>
После быстрого теста это вернулось
'serviceWorker' in navigator === true
. Если это пройдет через процесс проверки, это может стать прорывом для PWA!!!!
Есть новости об этой проблеме? Тем не менее, com.apple.developer.WebKit.ServiceWorkers не считают доступным правом в идентификаторах приложений на портале для разработчиков.