Угловой сайт для закрепления iPadOS без сервис-воркеров?
Для начала моя цель - выполнить две задачи:
- На iPad скройте хром и
- У моего веб-приложения есть закрепляемый значок.
Я начал изучать PWA и файлы манифеста, которые казались многообещающими, но это привело к работникам служб, возможностям установки, HTTP и т. Д. Чуть больше, чем мне нужно, но я пошел дальше, создал файл манифеста и теперь обслуживаю этот файл,
<link rel="manifest" href="./assets/manifest.json" />
Я пытаюсь указать минимальную сумму. Смотри ниже:
{
"name": "company some cool app",
"short_name": "some cool app",
"theme_color": "#0053a1",
"background_color": "#313b49",
"display": "standalone",
"scope": "/",
"start_url": "/",
"icons": [
{
"src": "./icons/icon-144x144.png",
"sizes": "153x144",
"type": "image/png"
}
]
}
Примечание. В итоге у меня появилось два метатега Apple для значков приложений; например,
<link rel="apple-touch-icon" href="./assets/icons/apple/icon.png" />```
Мое приложение обслуживается с веб-сайта ASP.NET Core, но мне действительно не нужен и не нужен HTTPS, так как это приложение предназначено для работы в закрытой локальной сети. Итак, мой первый вопрос: возможно ли достичь двух моих целей без обслуживающего персонала?
Когда я запускаю это, с сервером отладки Angular (ng serve hub-app --host=0.0.0.0 --prod
), Я могу зайти на сайт на своем iPad, прикрепить его и запустить, и все работает нормально.
Примечание: я знаю, что PWA работает по HTTPS на
localhost
только, но как ни странно, когда мой iPad попадает на мою машину разработки, он не используетlocalhost
адрес, и, похоже, он работает нормально - даже при передаче--prod
флаг.
Если я устанавливаю наш продукт и пытаюсь сделать то же самое, сайт просто сидит и ничего не делает. Кажется, что среда выполнения Angular никогда не запускается. Но потом я заметил, что скрипты Angular имеютdefer
тег:
<script src="runtime.1055bb5ba2e788f506b9.js" defer></script>
<script src="polyfills.34c0c6140312ee9a4a8f.js" defer></script>
<script src="main.67d9d64f0328fe5849f5.js" defer></script></body>
Если я удалю их из встроенной версии, мое приложение загрузится! Так что мой вопрос: почему они никогда не бегают? Я знаю, что они должны запускаться, когда страница загружается, но я не могу понять, почему они никогда не запускаются. Еще я пытаюсь подтвердить, действительно ли это проблема HTTPS и работы сервера?
По умолчанию в моем app.module
, Я закомментировал следующее:
// ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
Я пробовал установить enabled: false
, но без изменений.
Я подключил iPad к MacBook для отладки с помощью Safari, и, насколько я могу судить, на консоль не выводится никаких ошибок. Индексная страница загружается нормально, и это то, что я ожидал, но, как я уже сказал выше, это похоже наdefer
скрипты никогда не запускаются.