Запустить API-обработчик

Контролируйте запуск вашего приложения.

API-интерфейс Launch Handler позволяет вам контролировать способ запуска вашего приложения, например, использует ли оно существующее или новое окно и осуществляется ли переход к выбранному окну по URL-адресу запуска. Как и в случае с API обработки файлов, он также помещает объект LaunchParams в очередь window.launchQueue запущенной страницы.

Текущее состояние

Шаг Положение дел
1. Создайте объяснитель Полный
2. Создайте первоначальный проект спецификации. Полный
3. Соберите отзывы и доработайте дизайн Полный
4. Испытание происхождения. Полный
5. Запуск Полный

Использование API обработчика запуска

Поддержка браузера

Обработчик запуска доступен только в ChromeOS.

Поддержка браузера

  • 110
  • 110
  • Икс
  • Икс

Источник

Интерфейсы

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.

  1. Установите приложение Musicr 2.0 на устройство ChromeOS.
  2. Отправьте себе ссылку в чат-приложение вида 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 ).
  3. Щелкните ссылку в приложении чата и обратите внимание, как Musicr 2.0 открывается и воспроизводит трек.
  4. Нажмите ссылку в приложении чата еще раз и обратите внимание, что вы не получите второй экземпляр Musicr 2.0 .

Обратная связь

Команда Chromium хочет услышать о вашем опыте работы с API Launch Handler.

Расскажите нам о дизайне API

Что-то в API работает не так, как вы ожидали? Или вам не хватает методов или свойств, необходимых для реализации вашей идеи? У вас есть вопрос или комментарий по модели безопасности? Сообщите о проблеме спецификации в соответствующем репозитории GitHub или добавьте свои мысли к существующей проблеме.

Сообщить о проблеме с реализацией

Вы нашли ошибку в реализации Chromium? Или реализация отличается от спецификации? Сообщите об ошибке на сайте new.crbug.com . Обязательно включите как можно больше подробностей, простые инструкции по воспроизведению и введите Blink>AppManifest в поле «Компоненты» . Glitch отлично подходит для быстрого и простого обмена репродукциями.

Показать поддержку API

Планируете ли вы использовать API обработчика запуска? Ваша публичная поддержка помогает команде Chromium расставлять приоритеты в функциях и показывает другим поставщикам браузеров, насколько важно их поддерживать.

Отправьте твит @ChromiumDev , используя хэштег #LaunchHandler , и сообщите нам, где и как вы его используете.

Полезные ссылки