Управляйте запуском вашего приложения.
API обработчика запуска позволяет управлять запуском приложения, например, использовать ли существующее или новое окно, и будет ли выбранное окно перенаправлено на URL-адрес запуска. Как и в случае с API обработки файлов, он также добавляет объект LaunchParams
в window.launchQueue
запущенной страницы.
Текущий статус
Шаг | Статус |
---|---|
1. Создайте пояснитель | Полный |
2. Создайте первоначальный проект спецификации | Полный |
3. Собирайте отзывы и дорабатывайте дизайн | Полный |
4. Испытание происхождения. | Полный |
5. Запуск | Полный |
Используйте API обработчика запуска
Поддержка браузеров
Интерфейсы
API обработчика запуска определяет два новых интерфейса.
LaunchParams
: объект, содержащий targetURL
, который будет обработан потребителем. LaunchQueue
: очереди запускаются до тех пор, пока они не будут обработаны указанным потребителем.
Член манифеста launch_handler
Чтобы декларативно задать поведение запуска приложения, добавьте в манифест элемент launch_handler
. Он содержит одно подполе client_mode
. Оно позволяет управлять запуском нового или существующего клиента, а также навигацией по этому клиенту. В следующем примере показан файл с примерами значений, которые всегда будут перенаправлять все запуски новому клиенту.
{ "launch_handler": { "client_mode": "navigate-new" } }
Если не указано иное, launch_handler
по умолчанию принимает значение {"client_mode": "auto"}
. Допустимые значения для подполей:
-
client_mode
:-
navigate-new
: в окне веб-приложения создается новый контекст просмотра для загрузки целевого URL-адреса запуска. -
navigate-existing
: последнее взаимодействие с контекстом просмотра в окне веб-приложения перенаправляется на целевой URL-адрес запуска. -
focus-existing
: для запуска выбирается последний взаимодействующий контекст браузера в окне веб-приложения. Новый объектLaunchParams
, в которомtargetURL
равен URL-адресу запуска, будет добавлен в очередьwindow.launchQueue
документа. -
auto
: пользовательскому агенту необходимо самостоятельно определить, что лучше всего подходит для платформы. Например, мобильные устройства поддерживают только одиночные клиенты и будут использовать значениеexisting-client
, в то время как настольные устройства поддерживают несколько окон и будут использоватьnavigate-new
для предотвращения потери данных.
-
Свойство client_mode
также принимает список (массив) значений, где будет использоваться первое допустимое значение. Это позволяет добавлять новые значения в спецификацию, не нарушая обратную совместимость с существующими реализациями.
Например, если бы было добавлено гипотетическое значение "focus-matching-url"
, сайты указали бы "client_mode": ["focus-matching-url", "navigate-existing"]
, чтобы продолжить контролировать поведение старых браузеров, которые не поддерживают "focus-matching-url"
.
Использовать window.launchQueue
В следующем коде функция extractSongID()
извлекает songID
из URL-адреса, переданного при запуске. Это используется для воспроизведения песни в музыкальном плеере PWA.
if ('launchQueue' in window) { launchQueue.setConsumer((launchParams) => { if (launchParams.targetURL) { const songID = extractSongId(launchParams.targetURL); if (songID) { playSong(songID); } } }); }
Демо
Демонстрацию API Launch Handler можно увидеть в действии на странице PWA Launch Handler Demo . Обязательно ознакомьтесь с исходным кодом приложения, чтобы увидеть, как оно использует API Launch Handler.
- Установите приложение Musicr 2.0 .
- Отправьте себе ссылку в чате приложения формы
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3
. (Вы можете настроитьhttps://example.com/music.mp3
для любого URL -адреса, указывающего на аудиофайл, например,, например,https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav
). - Нажмите ссылку в приложении чата и обратите внимание, как Musicr 2.0 открывается и воспроизводит трек.
- Снова щелкните ссылку в приложении чата и обратите внимание, что вы не получите второй экземпляр Musicr 2.0 .
Обратная связь
Команда Chromium хочет узнать о вашем опыте работы с API Launch Handler.
Расскажите нам о дизайне API
Есть ли что-то в API, что работает не так, как вы ожидали? Или отсутствуют методы или свойства, необходимые для реализации вашей идеи? Есть вопросы или комментарии по модели безопасности? Отправьте запрос на спецификацию в соответствующий репозиторий GitHub или добавьте свои замечания к существующему запросу.
Сообщить о проблеме с реализацией
Вы обнаружили ошибку в реализации Chromium? Или реализация отличается от спецификации? Сообщите об ошибке на сайте new.crbug.com . Опишите её как можно подробнее, укажите инструкции по воспроизведению и введите Blink>AppManifest
в поле «Компоненты» .
Показать поддержку API
Планируете ли вы использовать API Launch Handler? Ваша публичная поддержка помогает команде Chromium расставлять приоритеты в отношении функций и показывает другим разработчикам браузеров, насколько важна их поддержка.
Отправьте твит @ChromiumDev , используя хэштег #LaunchHandler
, и расскажите, где и как вы его используете.