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:
- El usuario visita un sitio en
https://coffeeshop.example.com/
que realiza la siguiente llamada:navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s')
- 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>
. - 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.
Demostración
Puedes ver una demostración del registro de controladores de protocolo de URL para las AWP en Glitch.
- 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. - 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. - 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. - 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.
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.
Solicitud de consentimiento
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.
Vínculos útiles
- Explicación
- Borrador de especificaciones
- GitHub
- ChromeStatus
- Error de Chromium
- Revisión de TAG
- Discurso
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.