Controla cómo se inicia tu app.
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 navega a la URL de inicio. Al igual que con la API de File Handling, también se pone en cola un objeto LaunchParams
en el window.launchQueue
de la página iniciada.
Estado actual
Paso | Estado |
---|---|
1. Crea una explicación | Completar |
2. Crea el borrador inicial de la especificación | Completar |
3. Recopila comentarios y realiza iteraciones en el diseño | Completado |
4. Es una prueba de origen. | Completado |
5. Lanzamiento | Completar |
Usa la API de Launch Handler
Navegadores compatibles
Interfaces
La API de Launch Handler define dos interfaces nuevas.
LaunchParams
: Es un objeto que contiene el targetURL
que debe controlar el consumidor. LaunchQueue
: Pone en cola los lanzamientos hasta que los controla el consumidor especificado.
El miembro del manifiesto launch_handler
Para especificar de forma declarativa el comportamiento de inicio de tu app, agrega el miembro de manifiesto launch_handler
a tu manifiesto. Tiene un subcampo llamado client_mode
. Te permite controlar si se debe iniciar un cliente nuevo o uno existente, y si se debe navegar por este cliente. En el siguiente ejemplo, se muestra un archivo con valores ejemplares 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 la app web para cargar la URL de destino del inicio.navigate-existing
: El contexto de navegación con el que se interactuó más recientemente en una ventana de la app web se navega a la URL de destino del lanzamiento.focus-existing
: Se elige el contexto de navegación con el que se interactuó más recientemente en una ventana de la app web para controlar el inicio. Se pondrá en cola un nuevo objetoLaunchParams
con sutargetURL
establecido en la URL de lanzamiento en elwindow.launchQueue
del documento.auto
: El agente de usuario decide qué funciona mejor para la plataforma. Por ejemplo, los dispositivos móviles solo admiten un solo cliente 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 (matriz) de valores, en la que se usará el primer valor válido. Esto permite que se agreguen valores nuevos a la especificación sin interrumpir 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 los navegadores más antiguos que no admitían "focus-matching-url"
.
Usa window.launchQueue
En el siguiente código, la función extractSongID()
extrae un songID
de la URL que se pasó en el lanzamiento. Se usa para reproducir una canción en una PWA 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 de Launch Handler de PWA. 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.
- Envía un vínculo del formulario
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3
a una aplicación de chat. (Puedes personalizarhttps://example.com/music.mp3
para cualquier URL que dirija a un archivo de audio, por ejemplo,https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav
). - Haz clic en el vínculo de tu app de chat y observa cómo se abre Musicr 2.0 y reproduce la pista.
- Vuelve a hacer clic en el vínculo de tu 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
¿Hay algo sobre la API que 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 especificación en el repositorio de GitHub correspondiente o agrega tu opinión a un problema existente.
Informa 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? Presenta un error en new.crbug.com. Asegúrate de incluir tantos detalles como sea posible, instrucciones para reproducir el error y, luego, ingresa Blink>AppManifest
en el cuadro Components.
Cómo mostrar compatibilidad con la API
¿Planeas usar la API de Launch Handler? Tu apoyo público ayuda al equipo de Chromium a priorizar funciones y muestra a otros proveedores de navegadores lo importante que es admitirlas.
Envía un tweet a @ChromiumDev con el hashtag #LaunchHandler
y cuéntanos dónde y cómo lo usas.