Registro de controladores de protocolo de URL para AWPs

Permite que las AWP instaladas se encarguen de los vínculos que usan un protocolo específico para ofrecer una experiencia más integrada.

Información general sobre los esquemas (también conocidos como protocolos)

Un identificador uniforme de recursos (URI) es una secuencia compacta de caracteres que identifica un abstracto o físico. Cada URI comienza con una scheme que hace referencia a una especificación para asignar identificadores en ese esquema. Por lo tanto, la sintaxis del URI es un modelo federado de nomenclatura en el que la especificación de cada esquema puede restringir aún más la sintaxis y la semántica de identificadores que usan ese esquema. Los esquemas también se conocen como protocolos. Puedes ver algunos ejemplos de a continuación.

tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/

El término localizador uniforme de recursos (URL) hace referencia al subconjunto de URI que, además del identificar un recurso, proporcionar un medio para localizarlo mediante la descripción de su acceso principal (p.ej., la ubicación de la red).

Información general sobre el método registerProtocolHandler()

El método Navigator de solo contenido seguro registerProtocolHandler() permite a los sitios registrar su capacidad de abrir o administrar esquemas de URL específicos. Por lo tanto, los sitios deben llama al método de la siguiente manera: navigator.registerProtocolHandler(scheme, url). Los dos parámetros son se define de la siguiente manera:

  • scheme: Es una cadena que contiene el protocolo que el sitio desea controlar.
  • url: Es una cadena que contiene la URL del controlador. Esta URL debe incluir %s como marcador de posición que se reemplazará por la URL con escape que se administrará.

El esquema debe ser uno de los esquemas incluidos en la lista de entidades seguras (por ejemplo, mailto, bitcoin o magnet) o comienzan con web+, seguidas de al menos uno o más letras minúsculas ASCII después del prefijo web+, por ejemplo, web+coffee.

Para que sea más claro, aquí hay un ejemplo concreto del flujo:

  1. El usuario visita un sitio en https://coffeeshop.example.com/ que realiza la siguiente llamada: navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s')
  2. Más adelante, mientras visita https://randomsite.example.com/, el usuario hace clic en un vínculo. como <a href="web+coffee:latte-macchiato">All about latte macchiato</a>.
  3. De esta forma, el navegador accede a la siguiente URL: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato La búsqueda string decodificada por URL y, luego, lee ?type=web+coffee://latte-macchiato.

De qué se trata el manejo de protocolos

El mecanismo de registro de controladores de protocolo de URL para AWP consiste en ofrecer controladores de protocolo como parte de la instalación de una AWP a través de su manifiesto. Después de registrar una AWP como controlador de protocolos, cuando un usuario hace clic en un hipervínculo con un esquema específico, como mailto bitcoin o web+music de un navegador o una app específica de la plataforma, se abrirá la AWP registrada y recibe la URL. Es importante tener en cuenta que tanto el registro propuesto basado en manifiestos como los registerProtocolHandler() tradicionales desempeñan roles muy similares en la práctica, con lo que permite ofrecer experiencias del usuario complementarias:

  • Las similitudes incluyen los requisitos de la lista de esquemas que pueden registrarse y los el nombre y el formato de los parámetros, etcétera.
  • Las diferencias en el registro basado en manifiestos son sutiles, pero pueden ser útiles para mejorar de los usuarios de AWP. Por ejemplo, el registro de la AWP basado en manifiestos puede no requerir una acción adicional del usuario además de la instalación de la AWP iniciada por el usuario.

Casos de uso

  • En una AWP de procesamiento de texto, el usuario en un documento encuentra un vínculo a una presentación, como web+presentations://deck2378465 Cuando el usuario hace clic en el vínculo, la AWP de presentación se abre automáticamente en el alcance correcto y muestra la presentación de diapositivas.
  • En una app de chat específica de una plataforma, el usuario en un mensaje de chat recibe un vínculo a una URL de magnet. Cuando se hace clic en el vínculo, se inicia una AWP de torrent instalada y se comienza a descargar.
  • El usuario tiene instalada una AWP de transmisión de música. Cuando un amigo comparte el vínculo a una canción web+music://songid=1234&time=0:13 y el usuario hace clic en él, la AWP de transmisión de música iniciar automáticamente en una ventana independiente.

Cómo usar el registro de controladores de protocolo de URL para AWP

La API para el registro de controladores de protocolos de URL se basa estrechamente en navigator.registerProtocolHandler() Solo esta vez, la información se pasa declarativamente a través de el manifiesto de la app web en una nueva propiedad llamada "protocol_handlers" que toma un array de objetos con las dos claves requeridas, "protocol" y "url". El siguiente fragmento de código muestra cómo registrar web+tea y web+coffee. Los valores son cadenas que contienen la URL del controlador con el marcador de posición %s requerido para la URL con escape.

{
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol": "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

Se registran varias apps para el mismo protocolo

Si varias aplicaciones se registran como controladores del mismo esquema, por ejemplo, el mailto, el sistema operativo le mostrará al usuario un selector y le permitirá decidir cuál de los controladores registrados para usar.

Registro de la misma app para varios protocolos

La misma app puede registrarse para varios protocolos, como puedes ver en el ejemplo de código anterior.

Actualizaciones de apps y registro de controladores

Los registros del controlador se sincronizan con la última versión del manifiesto que proporciona la app. Hay hay dos casos:

  • Una actualización que agrega controladores nuevos activa su registro (independientemente de la instalación de la app).
  • Una actualización que quita los controladores activa la cancelación del registro de estos (por separado de la app) desinstalación).

Depuración de controladores de protocolo en Herramientas para desarrolladores

Navega a la sección Controladores de protocolo a través de Aplicación > Panel Manifest. Puedes mira y prueba todos los protocolos disponibles aquí.

Por ejemplo, instala esta AWP de demostración. En la Sección Protocol Handlers, escribe "americano" y haz clic en Probar protocolo para abrir la página del café en la AWP.

Controladores de protocolo en el panel del manifiesto

Demostración

Puedes ver una demostración del registro de controladores de protocolo de URL para las AWP en Glitch.

  1. Ve a https://protocol-handler.glitch.me/, instala la AWP y vuelve a cargar la app después de la instalación. El navegador ya registró la AWP como una del protocolo web+coffee con el sistema operativo.
  2. En la ventana de la AWP instalada, haz clic en el vínculo. https://protocol-handler-link.glitch.me/. Si confirmas esta acción, Abre una nueva pestaña del navegador con tres vínculos. Haz clic en el primero o el segundo (latte macchiato o americano). El navegador ahora te mostrará un mensaje y te preguntará si aceptas que la app sea una para el protocolo web+coffee. Si aceptas, la AWP se abrirá y mostrará café seleccionado.
  3. Para comparar con el flujo tradicional que usa navigator.registerProtocolHandler(), haz clic en el botón Registrar controlador de protocolos de la AWP Luego, en la pestaña del navegador, haz clic en el tercer vínculo. (chai). Del mismo modo, mostrará un mensaje, pero, luego, abrirá la AWP en una pestaña, no en una ventana del navegador.
  4. Envíate un mensaje a ti mismo en una aplicación específica de la plataforma, como Skype en Windows, con un vínculo como el siguiente: <a href="web+coffee://americano">Americano</a> y haz clic en ella. Asimismo, debería abrir el archivo o la AWP instalada.

Demostración del controlador de protocolo de URL con la pestaña del navegador con vínculos a la izquierda y una ventana de AWP independiente a la derecha.

Consideraciones de seguridad

Dado que la instalación de la AWP requiere que el contexto sea seguro, el manejo de protocolos hereda este “compute.vmExternalIpAccess”. La lista de controladores de protocolo registrados no se expone a la Web de ninguna manera, por lo que no se puede usar como vector de creación de huellas digitales.

Intentos de navegación no iniciados por el usuario

Es posible que no se abran los intentos de navegación que el usuario no inicia, pero que son programáticos. de Google Chat. La URL del protocolo personalizado solo se puede usar en contextos de navegación de nivel superior, pero no, por ejemplo, como la URL de un iframe.

Lista de protocolos permitidos

Al igual que con registerProtocolHandler(), hay una lista de protocolos permitidos que las apps pueden registrar que manejar.

En el primer inicio de la AWP debido a un protocolo invocado, el usuario verá un Cuadro de diálogo de permiso. En este diálogo, se mostrarán el nombre y el origen de la app, y se le preguntará al usuario la aplicación puede manejar vínculos del protocolo. Si un usuario rechaza el diálogo de permisos, el el sistema operativo ignorará el controlador de protocolo registrado. Cómo cancelar el registro del protocolo el usuario debe desinstalar la AWP que lo registró. El navegador también cancelará el registro el controlador de protocolos si el usuario selecciona "Recordar mi elección" y selecciona "No permitir".

Comentarios

El equipo de Chromium quiere conocer tu experiencia con el registro de controladores de protocolos de URL para AWP.

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? Haz una pregunta o comentario sobre la seguridad modelo? Informa un problema de especificaciones en el repositorio de GitHub correspondiente o agrega lo que piensas a 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 instrucciones simples para la reproducción y, luego, ingresa UI>Browser>WebAppInstalls en Components. . Glitch funciona muy bien para compartir repros rápidos y fáciles.

Demuestra compatibilidad con la API

¿Planeas usar el registro de controladores de protocolo de URL para las AWP? Tu apoyo público ayuda a El equipo de Chromium prioriza funciones y les muestra a otros proveedores de navegadores la importancia de brindar compatibilidad de ellos.

Comparte cómo piensas usarlo en la conversación del discurso de WICG. Enviar un Tweet a @ChromiumDev con el hashtag #ProtocolHandler y cuéntanos dónde y cómo la utilizas.

Agradecimientos

El registro de controladores de protocolo de URL para las AWP se implementó y especificó Fabio Rocha, Diego González, Connor Moody y Samuel Tang del equipo de Microsoft Edge. Este artículo fue revisado por Joe Medley y Fabio Rocha. Hero image de JJ Ying en Unsplash.