Permite que las AWP instaladas controlen los vínculos que usan un protocolo específico para brindar una experiencia más integrada.
Información general sobre los esquemas (también conocidos como protocolos)
Un identificador de recursos uniforme (URI) es una secuencia compacta de caracteres que identifica un recurso abstracto o físico. Cada URI comienza con un nombre de esquema que hace referencia a una especificación para asignar identificadores dentro de ese esquema. Por lo tanto, la sintaxis de URI es un sistema de nomenclatura federado y extensible en el que la especificación de cada esquema puede restringir aún más la sintaxis y la semántica de los identificadores que usan ese esquema. Los esquemas también se conocen como protocolos. A continuación, puedes ver algunos ejemplos de esquemas.
tel:+1-816-555-1212
mailto:[email protected]
news:comp.infosystems.www.servers.unix
https://web.dev/
El término localizador uniforme de recursos (URL) se refiere al subconjunto de URIs que, además de identificar un recurso, proporcionan un medio para ubicarlo describiendo su mecanismo de acceso principal (p.ej., su ubicación de red).
Información general sobre el método registerProtocolHandler()
El método Navigator de solo contenido seguro registerProtocolHandler() permite que los sitios registren su capacidad para abrir o controlar esquemas de URL particulares. Por lo tanto, los sitios deben llamar al método de la siguiente manera: navigator.registerProtocolHandler(scheme, url). Los dos parámetros se definen 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%scomo marcador de posición que se reemplazará por la URL con caracteres de escape que se controlará.
El esquema debe ser uno de los esquemas incluidos en la lista de entidades seguras (por ejemplo, mailto, bitcoin o magnet) o comenzar con web+, seguido de al menos una o más letras ASCII en minúscula después del prefijo web+, por ejemplo, web+coffee.
Para que esto quede más claro, aquí tienes 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>. - Esto hace que el navegador navegue a la siguiente URL:
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. La cadena de búsqueda decodificada de la URL se lee como?type=web+coffee://latte-macchiato.
Acerca del control de protocolos
El mecanismo actual de registro de controladores de protocolo de URL para AWPs se trata de ofrecer el registro de 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 protocolo, cuando un usuario haga clic en un hipervínculo con un esquema específico, como mailto, bitcoin o web+music, desde un navegador o una app específica de la plataforma, se abrirá la AWP registrada y recibirá la URL. Es importante tener en cuenta que tanto el registro propuesto basado en el manifiesto como el registerProtocolHandler() tradicional desempeñan roles muy similares en la práctica, a la vez que permiten la posibilidad de experiencias del usuario complementarias:
- Las similitudes incluyen requisitos relacionados con la lista de esquemas que se pueden registrar, el nombre y el formato de los parámetros, etcétera.
- Las diferencias en el registro basado en el manifiesto son sutiles, pero pueden ser útiles para mejorar la experiencia de los usuarios de la PWA. Por ejemplo, el registro de la PWA basado en el manifiesto podría no requerir una acción adicional del usuario, aparte de la instalación de la PWA iniciada por el usuario.
Casos de uso
- En una PWA de procesamiento de textos, el usuario de un documento encuentra un vínculo a una presentación como
web+presentations://deck2378465. Cuando el usuario hace clic en el vínculo, la PWA 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 para una plataforma, el usuario de un mensaje de chat recibe un vínculo a una URL de
magnet. Cuando haces clic en el vínculo, se inicia una AWP de torrent instalada y comienza la descarga. - El usuario tiene instalada una AWP de transmisión de música. Cuando un amigo comparte un vínculo a una canción, como
web+music://songid=1234&time=0:13, y el usuario hace clic en él, la AWP de transmisión de música se iniciará automáticamente en una ventana independiente.
Cómo usar el registro de controladores de protocolo de URL para AWPs
La API para el registro de controladores de protocolos de URL se modela de forma similar a navigator.registerProtocolHandler(). Solo que, esta vez, la información se pasa de forma declarativa a través del manifiesto de la app web en una nueva propiedad llamada "protocol_handlers" que toma un array de objetos con las dos claves obligatorias "protocol" y "url". En el siguiente fragmento de código, se 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"
}
]
}
Varias apps se registran para el mismo protocolo
Si varias aplicaciones se registran como controladores para el mismo esquema, por ejemplo, el protocolo mailto, el sistema operativo le mostrará al usuario un selector y le permitirá decidir cuál de los controladores registrados usar.
La misma app se registra para varios protocolos
La misma app puede registrarse para varios protocolos, como se puede ver en el ejemplo de código anterior.
Actualizaciones de la app y registro del controlador
Los registros de controladores se sincronizan con la versión más reciente del manifiesto que proporciona la app. Hay dos casos:
- Una actualización que agrega controladores nuevos activa el registro de controladores (independiente de la instalación de la app).
- Una actualización que quita controladores activa la anulación del registro de controladores (independiente de la desinstalación de la app).
Depuración de controladores de protocolos en Herramientas para desarrolladores
Navega a la sección Protocol Handlers a través del panel Application > Manifest. Aquí puedes ver y probar todos los protocolos disponibles.