Контролируйте запуск вашего приложения.
API-интерфейс Launch Handler позволяет вам контролировать способ запуска вашего приложения, например, использует ли оно существующее или новое окно и осуществляется ли переход к выбранному окну по URL-адресу запуска. As with the File Handing API, this also enqueues a LaunchParams
object in the launched page's window.launchQueue
.
Текущий статус
Шаг | Статус |
---|---|
1. Создайте объяснитель | Полный |
2. Создайте первоначальный проект спецификации. | Полный |
3. Соберите отзывы и доработайте дизайн | Полный |
4. Испытание происхождения. | Полный |
5. Запуск | Полный |
Используйте API обработчика запуска
Поддержка браузера
Интерфейсы
API-интерфейс Launch Handler определяет два новых интерфейса.
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
-адресом запуска будет поставлен в очередь в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 API в действии можно увидеть в Демо-версии Launch Handler Demo PWA . Обязательно ознакомьтесь с исходным кодом приложения, чтобы узнать, как оно использует API-интерфейс Launch Handler.
- Установите приложение Musicr 2.0 .
- Отправьте себе ссылку в чат-приложение вида
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Вы можете настроитьhttps://example.com/music.mp3
для любого URL-адреса, указывающего на аудиофайл, например,https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Щелкните ссылку в приложении чата и обратите внимание, как Musicr 2.0 открывается и воспроизводит трек.
- Нажмите ссылку в приложении чата еще раз и обратите внимание, что вы не получите второй экземпляр Musicr 2.0 .
Обратная связь
Команда Chromium хочет услышать о вашем опыте работы с API Launch Handler.
Расскажите нам о дизайне API
Что-то в API работает не так, как вы ожидали? Или вам не хватает методов или свойств, необходимых для реализации вашей идеи? У вас есть вопрос или комментарий по модели безопасности? Сообщите о проблеме спецификации в соответствующем репозитории GitHub или добавьте свои мысли к существующей проблеме.
Сообщить о проблеме с реализацией
Вы нашли ошибку в реализации Chromium? Или реализация отличается от спецификации? Сообщите об ошибке на сайте new.crbug.com . Обязательно укажите как можно больше подробностей, инструкции по воспроизведению и введите Blink>AppManifest
в поле «Компоненты» . Glitch отлично подходит для обмена быстрыми повторами.
Показать поддержку API
Планируете ли вы использовать API обработчика запуска? Ваша публичная поддержка помогает команде Chromium расставлять приоритеты в функциях и показывает другим поставщикам браузеров, насколько важно их поддерживать.
Отправьте твит @ChromiumDev, используя хэштег #LaunchHandler
, и сообщите нам, где и как вы его используете.