Iniciar a API Handler

Controlar como o app é iniciado.

A API Launch Handler permite controlar como o app é iniciado. Por exemplo, se ele usa uma janela nova ou existente e se a janela escolhida é navegada até o URL de inicialização. Assim como na API File Handling, isso também enfileira um objeto LaunchParams no window.launchQueue da página iniciada.

Status atual

Etapa Status
1. Criar explicação Concluído
2. Criar o rascunho inicial da especificação Concluído
3. Coletar feedback e iterar o design Concluído
4. Teste de origem. Concluído
5. Lançamento Concluído

Usar a API Launch Handler

Suporte ao navegador

Interfaces

A API Launch Handler define duas novas interfaces.

LaunchParams : um objeto que contém o targetURL a ser processado pelo consumidor. LaunchQueue : enfileira inicializações até que sejam processadas pelo consumidor especificado.

O membro do manifesto launch_handler

Para especificar de forma declarativa o comportamento de inicialização do app, adicione o membro do manifesto launch_handler ao manifesto. Ele tem um subcampo chamado client_mode. Ele permite controlar se um cliente novo ou existente deve ser iniciado e se ele deve ser navegado. O exemplo a seguir mostra um arquivo com valores exemplares que sempre encaminhariam todos os lançamentos para um novo cliente.

{   "launch_handler": {     "client_mode": "navigate-new"   } } 

Se não for especificado, launch_handler será usado como padrão para {"client_mode": "auto"}. Os valores permitidos para os subcampos são:

  • client_mode:
    • navigate-new: um novo contexto de navegação é criado em uma janela de app da Web para carregar o URL de destino do lançamento.
    • navigate-existing: o contexto de navegação com que o usuário interagiu mais recentemente em uma janela de app da Web é navegado até o URL de destino do lançamento.
    • focus-existing: o contexto de navegação com que o usuário interagiu mais recentemente em uma janela de app da Web é escolhido para processar a inicialização. Um novo objeto LaunchParams com o targetURL definido como o URL de lançamento será enfileirado no window.launchQueue do documento.
    • auto: o comportamento depende do user agent para decidir o que funciona melhor para a plataforma. Por exemplo, dispositivos móveis só aceitam clientes únicos e usam existing-client, enquanto dispositivos desktop aceitam várias janelas e usam navigate-new para evitar a perda de dados.

A propriedade client_mode também aceita uma lista (matriz) de valores, em que o primeiro valor válido será usado. Isso permite que novos valores sejam adicionados à especificação sem prejudicar a compatibilidade com versões anteriores das implementações atuais.

Por exemplo, se o valor hipotético "focus-matching-url" fosse adicionado, os sites especificariam "client_mode": ["focus-matching-url", "navigate-existing"] para continuar controlando o comportamento de navegadores mais antigos que não ofereciam suporte a "focus-matching-url".

Usar window.launchQueue

No código a seguir, a função extractSongID() extrai um songID do URL transmitido na inicialização. Usado para tocar uma música em um PWA de player de música.

if ('launchQueue' in window) {   launchQueue.setConsumer((launchParams) => {     if (launchParams.targetURL) {       const songID = extractSongId(launchParams.targetURL);       if (songID) {         playSong(songID);       }     }   }); } 

Demonstração

Confira uma demonstração da API Launch Handler em ação na Demonstração do Launch Handler de PWA. Confira o código-fonte do aplicativo para saber como ele usa a API Launch Handler.

  1. Instale o app Musicr 2.0.
  2. Envie um link para você mesmo em um aplicativo de chat do formulário https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3. Você pode personalizar https://example.com/music.mp3 para qualquer URL que aponte para um arquivo de áudio, por exemplo, https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav.
  3. Clique no link no app de chat e observe como o Musicr 2.0 abre e toca a música.
  4. Clique no link no app de chat novamente e observe que você não vai receber uma segunda instância do Musicr 2.0.

Feedback

A equipe do Chromium quer saber sobre suas experiências com a API Launch Handler.

Fale sobre o design da API

Há algo na API que não funciona como esperado? Ou há métodos ou propriedades ausentes que você precisa implementar sua ideia? Tem uma dúvida ou um comentário sobre o modelo de segurança? Registre um problema de especificação no repositório do GitHub correspondente ou adicione suas ideias a um problema já existente.

Informar um problema com a implementação

Você encontrou um bug na implementação do Chromium? Ou a implementação é diferente da especificação? Registre um bug em new.crbug.com. Inclua o máximo de detalhes possível, instruções para reprodução e insira Blink>AppManifest na caixa Componentes.

Mostrar suporte para a API

Você planeja usar a API Launch Handler? Seu apoio público ajuda a equipe do Chromium a priorizar recursos e mostra a outros fornecedores de navegadores a importância de oferecer suporte a eles.

Envie um tweet para @ChromiumDev usando a hashtag #LaunchHandler e informe onde e como você está usando.

Links úteis