Controle como seu app é iniciado.
A API Launch Handler permite controlar como seu app é iniciado, por exemplo, se ele usa uma
janela existente ou nova e se a janela escolhida é navegada para o URL de inicialização. Assim como
a API File Handing, ela 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 rascunho inicial das especificações | Concluído |
3. Reunir feedbacks e iterar no design | Completos |
4. Teste de origem | Completos |
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
que será processado pelo consumidor.
LaunchQueue
: a fila é iniciada até ser processada 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
. Ele permite controlar se um cliente novo ou atual precisa ser iniciado e se esse cliente precisa ser navegado. O exemplo
abaixo mostra um arquivo com valores exemplares que sempre encaminha 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
: o item que interagiu mais recentemente com o contexto de navegação em uma janela de app da Web é redirecionado para o URL de destino da inicialização.focus-existing
: o contexto de navegação que interagiu mais recentemente em uma janela de app da Web é escolhido para processar a inicialização. Um novo objetoLaunchParams
com otargetURL
definido como o URL de início será colocado na fila nowindow.launchQueue
do documento.auto
: o comportamento depende do user agent para decidir o que funciona melhor na plataforma. Por exemplo, os dispositivos móveis oferecem suporte apenas a clientes únicos e usamexisting-client
, enquanto os dispositivos desktop oferecem suporte a várias janelas e usamnavigate-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 window.launchQueue
No código a seguir, a função extractSongID()
extrai um songID
do URL transmitido na inicialização. É usado para reproduzir uma música no 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
Veja 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 si mesmo em um aplicativo de chat no formato
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. Você pode personalizarhttps://example.com/music.mp3
para qualquer URL que aponte 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 faixa.
- Clique no link no app de chat novamente e observe que você não verá 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
Algo na API não funciona como esperado? Ou há métodos ou propriedades ausentes que você precisa para implementar sua ideia? Tem alguma dúvida ou 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 existente.
Informar um problema com a implementação
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 simples para reprodução e digite Blink>AppManifest
na caixa Componentes.
O Glitch funciona muito bem para compartilhar repetições rápidas e fáceis.
Mostrar suporte para a API
Você planeja usar a API Launch Handler? Seu suporte público ajuda a equipe do Chromium a priorizar recursos e mostra a outros fornecedores de navegador como esse suporte é essencial.
Envie um tweet para @ChromiumDev usando a hashtag
#LaunchHandler
e
informe onde e como você está usando a ferramenta.