Controle como seu app é iniciado.
A API Launch Handler permite controlar como o app é iniciado, por exemplo, se ele usa uma
janela atual ou nova e se a janela escolhida será direcionada para o URL de inicialização. Assim como
com a API File Handing, isso também enfileira um objeto LaunchParams
no window.launchQueue
da página iniciada.
Status atual
Step | Status |
---|---|
1. Criar explicação | Concluído |
2. Criar um rascunho inicial da especificação | Concluído |
3. Coletar feedback e iterar no design | Concluída |
4. Teste de origem. | Concluída |
5. Lançamento | Concluído |
Como usar a API Launch Handler
Suporte ao navegador
O Gerenciador de inicialização está disponível apenas no ChromeOS.
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 maneira declarativa o comportamento de inicialização do app, adicione o membro launch_handler
ao manifesto. Ele tem um subcampo chamado client_mode
. Ela permite controlar se um cliente novo ou existente será iniciado e se esse cliente será navegado. O exemplo
abaixo mostra um arquivo com valores exemplares que sempre encaminhavam todas as inicializações para um novo
cliente.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Se não for especificado, launch_handler
será definido como {"client_mode": "auto"}
por padrão. 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 da inicialização.navigate-existing
: a interação mais recente com o contexto de navegação em uma janela de app da Web é direcionada para o URL de destino do lançamento.focus-existing
: o usuário que interagiu mais recentemente com o contexto de navegação em uma janela de app da Web é escolhido para processar a inicialização. Um novo objetoLaunchParams
com otargetURL
definido para o URL de inicialização será colocado na fila nowindow.launchQueue
do documento.auto
: cabe ao user agent decidir o que funciona melhor para a plataforma. Por exemplo, os dispositivos móveis aceitam apenas clientes únicos e usariamexisting-client
, enquanto os desktops oferecem suporte a várias janelas e usariamnavigate-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 eram compatíveis com "focus-matching-url"
.
Como usar a window.launchQueue
No código abaixo, a função extractSongID()
extrai um songID
do URL
transmitido na inicialização. Isso é usado para tocar uma música em um PWA do 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 gerenciador de inicialização do PWA. Confira o código-fonte do aplicativo para ver como ele usa a API Launch Handler.
- Instale o app Musicr 2.0 em um dispositivo ChromeOS.
- Envie um link para você em um aplicativo de chat do formulário
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. Você pode personalizarhttps://example.com/music.mp3
para qualquer URL que direcione para 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
. - Clique no link no app de chat e observe como o Musicr 2.0 abre e toca a música.
- Clique no link no app de chat novamente e observe que você não terá uma segunda instância do Musicr 2.0.
Feedback
A equipe do Chromium quer saber mais sobre suas experiências com a API Launch Handler.
Fale sobre o design da API
Existe algo na API que não funciona como você esperava? Ou faltam métodos ou propriedades que você precisa para implementar sua ideia? Tem uma pergunta ou comentário sobre o modelo de segurança? Registre um problema de especificação no repositório do GitHub (link em inglês) correspondente ou adicione sua opinião a um problema.
Informar um problema com a implementação
Você encontrou um bug na implementação do Chromium? Ou a implementação é diferente das especificações?
Registre um bug em new.crbug.com. Inclua o máximo de detalhes possível,
instruções simples para reprodução e insira Blink>AppManifest
na caixa Componentes.
O Glitch é ótimo para compartilhar repetições rápidas e fáceis.
Mostrar suporte à API
Você planeja usar a API Launch Handler? Seu apoio público ajuda a equipe do Chromium a priorizar recursos e mostrar a outros fornecedores de navegadores como é fundamental oferecer suporte a eles.
Envie um tweet para @ChromiumDev usando a hashtag
#LaunchHandler
e
informe onde e como você a está usando.