Iniciar a API Handler

Controle como o app é iniciado.

A API Launch Handler permite controlar como seu aplicativo é iniciado, por exemplo, se ele usa um uma janela atual ou uma nova e se a janela escolhida é direcionada para o URL de início. Assim como a API File Handling, ela 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 um rascunho inicial da especificação Concluído
3. Colete feedback e iterar no design Concluído
4. Teste de origem. Concluído
5. Lançamento Concluído

Usar a API Launch Handler

Suporte ao navegador

Compatibilidade com navegadores

  • Chrome: 110
  • Borda: 110.
  • Firefox: incompatível.
  • Safari: incompatível.

Origem

Interfaces

A API Launch Handler define duas novas interfaces.

LaunchParams: um objeto que contém o targetURL a ser processado pelo consumidor. LaunchQueue: as filas são iniciadas até serem 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. Ela permite que você controle se um novo cliente existente deve ser lançado e se esse cliente deve ser navegado. O exemplo a seguir mostra um arquivo com valores exemplares que sempre encaminhavam todos os lançamentos para um novo para o 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 destino do lançamento. URL.
    • navigate-existing: a janela de app da Web com a qual o contexto de navegação mais recentemente interagido é navegada para o URL de destino da inicialização.
    • focus-existing: a interação mais recente com o contexto de navegação em uma janela de app da Web. é escolhido para lidar com o lançamento. Um novo objeto LaunchParams com o targetURL definido como o URL de início será colocado na fila no window.launchQueue do documento.
    • auto: cabe ao user agent decidir o que funciona melhor para a plataforma. Por exemplo, dispositivos móveis oferecem suporte apenas a clientes únicos e usariam existing-client, enquanto dispositivos de computador oferecem suporte a várias janelas e usariam 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á usados. Isso permite que novos valores sejam adicionados à especificação sem prejudicar a compatibilidade com versões anteriores. com as 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 abaixo, a função extractSongID() extrai um songID do URL após o lançamento. Ele é usado para tocar uma música em um app da Web para audição de músicas.

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

Demonstração

Veja uma demonstração da API Launch Handler em ação no Demonstração do gerenciador de inicialização do PWA. Não deixe de conferir código-fonte do aplicativo para ver como ele usa os Iniciar a API Handler.

  1. Instale o app Musicr 2.0.
  2. Envie um link para você mesmo em um aplicativo de chat do formulário https://launch-handler.glitch.me?track=https://example.com/music.mp3. Você pode personalizar https://example.com/music.mp3 para qualquer URL que direcione a um arquivo de áudio, por exemplo: https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190).
  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 em seu aplicativo de bate-papo novamente e observe que você não obterá 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 para implementar sua ideia? Tem uma pergunta ou comentário sobre a segurança modelo? Registre um problema de especificação no repositório do GitHub correspondente ou adicione sua opinião a uma problema.

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. Não deixe de incluir o máximo de detalhes possível, instruções de reprodução e digite Blink>AppManifest na caixa Componentes. O Glitch é ótimo para compartilhar reproduções rápidas.

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ê o utiliza.

Links úteis