Устанавливаемость и манифест приложения — Примеры
Пример 1 — Манифест с одной иконкой и без короткого имени
Сайт устанавливается, но лончер показывает обрезанное имя и иконку без краёв; скажите, какие поля за это отвечают, и опишите приложение как следует.
{
"name": "Field Notes for Surveying Teams",
"start_url": "/app",
"display": "standalone",
"icons": [{ "src": "/icons/logo.png" }]
}
Решение
{
"name": "Field Notes for Surveying Teams",
"short_name": "Notes",
"start_url": "/app",
"display": "standalone",
"background_color": "#0f172a",
"theme_color": "#0f172a",
"icons": [
{ "src": "/icons/192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/512.png", "sizes": "512x512", "type": "image/png" },
{ "src": "/icons/maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
]
}
Полное имя — то, что лончер обрезает, поэтому short_name и есть поле, которое решает, узнаётся ли установленное приложение с первого взгляда. Единственную иконку лончеру приходится масштабировать и обрезать под свою форму; из-за этого логотип во всю площадь теряет края. А несколько объявленных размеров и один maskable-вариант помещают содержимое внутрь безопасной зоны; манифест, которому не хватает любого требуемого браузером поля, игнорируется целиком, и приглашение установить не появляется. Поэтому минимальный набор — имя, короткое имя, start URL, режим отображения и иконка с объявленным размером — стоит держать как чек-лист, а не как необязательную деталь.
Пример 2 — Установленное приложение без пути назад
Приложение открывается в собственном окне с глубокого экрана, и внутри нет ни адресной строки, ни кнопки «назад»; скажите, что убрал режим отображения, и верните навигацию, которую раньше давал браузер.
{ "name": "Field Notes", "short_name": "Notes", "start_url": "/app/settings/sync", "display": "standalone" }
Решение
{ "name": "Field Notes", "short_name": "Notes", "start_url": "/app", "display": "standalone" }
<nav aria-label="Основная навигация">
<a href="/app">Главная</a>
<a href="/app/settings">Настройки</a>
</nav>
<!-- внешние ссылки открываются в браузере, а не подменяют приложение -->
<a href="/help" target="_blank" rel="noopener">Справка</a>
display: standalone убирает браузерную обвязку, а вместе с ней кнопку «назад» и адресную строку, поэтому навигация становится задачей приложения, а не браузера. start_url, который указывает на экран настроек, усугубляет это: пользователь попадает туда, куда не выбирал, и не имеет очевидного пути к нужной части приложения. Старт с домашнего экрана и навигация внутри приложения возвращают и то и другое, а внешним ссылкам место во вкладке браузера, чтобы страница справки не запирала пользователя внутри приложения без пути назад. Установку к тому же предлагают, а не требуют: приглашение уместно после того, как у пользователя появилась причина её хотеть.