Controla cómo se inicia tu aplicación.
La API de Launch Handler te permite controlar cómo se inicia tu app, por ejemplo, si usa una ventana existente o una nueva, y si la ventana elegida se navega a la URL de inicio. Al igual que con la API de File Handing, también se pone en cola un objeto LaunchParams
en el archivo window.launchQueue
de la página que se inició.
Estado actual
Step | Estado |
---|---|
1. Crear explicación | Completo |
2. Crea el borrador inicial de la especificación | Completo |
3. Recopilar comentarios e iterar el diseño | Completado |
4. Prueba de origen. | Completado |
5. Lanzamiento | Completo |
Cómo usar la API de Launch Handler
Navegadores compatibles
La opción para iniciar el controlador solo está disponible en ChromeOS.
Interfaces
La API de Launch Handler define dos interfaces nuevas.
LaunchParams
: Un objeto que contiene el targetURL
que controlará el consumidor.
LaunchQueue
: Las colas se inician hasta que el consumidor especificado las controle.
El miembro del manifiesto launch_handler
Para especificar de forma declarativa el comportamiento de inicio de tu app, agrega el miembro del manifiesto launch_handler
a tu manifiesto. Tiene un subcampo llamado client_mode
. Te permite controlar si se debe iniciar un cliente nuevo o existente, y si se debe navegar por este cliente. En el siguiente ejemplo, se muestra un archivo con valores de ejemplo que siempre enrutaría todos los lanzamientos a un cliente nuevo.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Si no se especifica, el valor predeterminado de launch_handler
es {"client_mode": "auto"}
. Los valores permitidos para los subcampos son los siguientes:
client_mode
:navigate-new
: Se crea un nuevo contexto de navegación en una ventana de app web para cargar la URL de destino del lanzamiento.navigate-existing
: El contexto de navegación con el que se interactuó más recientemente en una ventana de app web se navega a la URL de destino del lanzamiento.focus-existing
: Se elige el contexto de navegación más reciente en el que se interactuó en una ventana de app web para controlar el inicio. Un nuevo objetoLaunchParams
con sutargetURL
configurado como la URL de inicio se pondrá en cola en elwindow.launchQueue
del documento.auto
: El comportamiento depende del usuario-agente para decidir qué funciona mejor para la plataforma. Por ejemplo, los dispositivos móviles solo admiten clientes únicos y usaríanexisting-client
, mientras que los dispositivos de escritorio admiten varias ventanas y usaríannavigate-new
para evitar la pérdida de datos.
La propiedad client_mode
también acepta una lista (array) de valores en la que se usará el primer valor válido. Esto es para permitir que se agreguen valores nuevos a la especificación sin afectar la retrocompatibilidad con las implementaciones existentes.
Por ejemplo, si se agregara el valor hipotético "focus-matching-url"
, los sitios especificarían "client_mode": ["focus-matching-url", "navigate-existing"]
para seguir controlando el comportamiento de navegadores más antiguos que no admitían "focus-matching-url"
.
Cómo usar window.launchQueue
En el siguiente código, la función extractSongID()
extrae un songID
de la URL
que se pasa en el inicio. Se usa para reproducir una canción en una AWP de reproductor de música.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
Demostración
Puedes ver una demostración de la API de Launch Handler en acción en la demostración del controlador de inicio de la AWP. Asegúrate de consultar el código fuente de la aplicación para ver cómo usa la API de Launch Handler.
- Instala la app de Musicr 2.0 en un dispositivo ChromeOS.
- Envíate un vínculo en una aplicación de chat con el formulario
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Puedes personalizarhttps://example.com/music.mp3
para cualquier URL que dirija a un archivo de audio, por ejemplo,https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Haz clic en el vínculo en tu app de chat y observa cómo Musicr 2.0 abre y reproduce la pista.
- Vuelve a hacer clic en el vínculo en la app de chat y observa que no obtendrás una segunda instancia de Musicr 2.0.
Comentarios
El equipo de Chromium quiere conocer tu experiencia con la API de Launch Handler.
Cuéntanos sobre el diseño de la API
¿Algo en la API no funciona como esperabas? ¿O faltan métodos o propiedades que necesitas para implementar tu idea? ¿Tienes alguna pregunta o comentario sobre el modelo de seguridad? Informa un problema de especificaciones en el repositorio de GitHub correspondiente o agrega tus ideas sobre un problema existente.
Informar un problema con la implementación
¿Encontraste un error en la implementación de Chromium? ¿O la implementación es diferente de la especificación?
Informa un error en new.crbug.com. Asegúrate de incluir tantos detalles como puedas, además de instrucciones simples para la reproducción, y, luego, ingresa Blink>AppManifest
en el cuadro Componentes.
Glitch funciona muy bien para compartir repros rápidos y fáciles.
Demuestra compatibilidad con la API
¿Piensas usar la API del controlador de inicio? Tu asistencia pública ayuda al equipo de Chromium a priorizar funciones y les muestra a otros proveedores de navegadores la importancia de admitirlas.
Envía un tweet a @ChromiumDev con el hashtag #LaunchHandler
y cuéntanos dónde y cómo lo usas.
Vínculos útiles
- Explicación pública
- Especificaciones del borrador
- Iniciar demostración de la API del controlador | Fuente de la demostración de la API del controlador
- Error de seguimiento de Chromium
- Entrada de ChromeStatus.com
- Componente de parpadeo:
Blink>AppManifest
- Revisión del TAG
- Intención de crear un prototipo