Laissez les PWA installées gérer les liens qui utilisent un protocole spécifique pour une expérience plus intégrée.
Informations sur les schémas (ou protocoles)
Un identifiant de ressource uniforme (URI) est une séquence compacte de caractères qui identifie une ressource abstraite ou physique. Chaque URI commence par un nom de schéma qui fait référence à une spécification pour l'attribution d'identifiants dans ce schéma. Par conséquent, la syntaxe URI est un système de dénomination fédéré et extensible dans lequel la spécification de chaque schéma peut restreindre davantage la syntaxe et la sémantique des identifiants utilisant ce schéma. Les schémas sont également appelés protocoles. Vous trouverez ci-dessous quelques exemples de schémas.
tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/
Le terme Uniform Resource Locator (URL) fait référence au sous-ensemble d'URI qui, en plus d'identifier une ressource, fournit un moyen de la localiser en décrivant son mécanisme d'accès principal (par exemple, son emplacement réseau).
Contexte de la méthode registerProtocolHandler()
La méthode Navigator
registerProtocolHandler()
permet aux sites d'indiquer s'ils peuvent ouvrir ou gérer des schémas d'URL spécifiques. Par conséquent, les sites doivent appeler la méthode comme suit : navigator.registerProtocolHandler(scheme, url)
. Les deux paramètres sont définis comme suit :
scheme
: chaîne contenant le protocole que le site souhaite gérer.url
: chaîne contenant l'URL du gestionnaire. Cette URL doit inclure%s
en tant qu'espace réservé qui sera remplacé par l'URL à gérer (avec les caractères spéciaux remplacés).
Le schéma doit être l'un des schémas autorisés (par exemple, mailto
, bitcoin
ou magnet
) ou commencer par web+
, suivi d'au moins une ou plusieurs lettres ASCII minuscules après le préfixe web+
, par exemple web+coffee
.
Pour que tout soit bien clair, voici un exemple concret du flux :
- L'utilisateur consulte un site à l'adresse
https://coffeeshop.example.com/
qui effectue l'appel suivant :navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s')
. - Plus tard, lors de sa visite sur
https://randomsite.example.com/
, l'utilisateur clique sur un lien tel que<a href="web+coffee:latte-macchiato">All about latte macchiato</a>
. - Le navigateur est alors redirigé vers l'URL suivante :
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato
. La chaîne de recherche décodée en URL se lit alors?type=web+coffee://latte-macchiato
.
À propos de la gestion des protocoles
Le mécanisme actuel d'enregistrement du gestionnaire de protocoles d'URL pour les PWA consiste à proposer l'enregistrement du gestionnaire de protocoles lors de l'installation d'une PWA via son fichier manifeste. Après avoir enregistré une PWA en tant que gestionnaire de protocoles, lorsqu'un utilisateur clique sur un lien hypertexte avec un schéma spécifique tel que mailto
, bitcoin
ou web+music
à partir d'un navigateur ou d'une application spécifique à la plate-forme, la PWA enregistrée s'ouvre et reçoit l'URL. Il est important de noter que l'enregistrement basé sur le fichier manifeste proposé et le registerProtocolHandler()
traditionnel jouent des rôles très similaires dans la pratique, tout en permettant la possibilité d'expériences utilisateur complémentaires :
- Les similitudes incluent les exigences concernant la liste des schémas pouvant être enregistrés, ainsi que le nom et le format des paramètres, etc.
- Les différences dans l'enregistrement basé sur le fichier manifeste sont subtiles, mais peuvent être utiles pour améliorer l'expérience des utilisateurs de PWA. Par exemple, l'enregistrement d'une PWA basée sur un fichier manifeste peut ne pas nécessiter d'action supplémentaire de la part de l'utilisateur, en dehors de l'installation de la PWA initiée par l'utilisateur.
Cas d'utilisation
- Dans une PWA de traitement de texte, l'utilisateur rencontre un lien vers une présentation, par exemple
web+presentations://deck2378465
. Lorsque l'utilisateur clique sur le lien, la PWA de présentation s'ouvre automatiquement dans le champ d'application approprié et affiche le diaporama. - Dans une application de chat spécifique à une plate-forme, l'utilisateur d'un message de chat reçoit un lien vers une URL
magnet
. Lorsque vous cliquez sur le lien, une PWA torrent installée se lance et commence le téléchargement. - L'utilisateur a installé une PWA de streaming musical. Lorsqu'un ami partage un lien vers un titre, comme
web+music://songid=1234&time=0:13
, et que l'utilisateur clique dessus, la PWA de streaming musical se lance automatiquement dans une fenêtre autonome.
Utiliser l'enregistrement du gestionnaire de protocoles d'URL pour les PWA
L'API pour l'enregistrement du gestionnaire de protocoles d'URL est étroitement calquée sur navigator.registerProtocolHandler()
. Cette fois-ci, les informations sont transmises de manière déclarative via le fichier manifeste de l'application Web dans une nouvelle propriété appelée "protocol_handlers"
, qui accepte un tableau d'objets avec les deux clés requises "protocol"
et "url"
. L'extrait de code ci-dessous montre comment enregistrer web+tea
et web+coffee
. Les valeurs sont des chaînes contenant l'URL du gestionnaire avec l'espace réservé %s
requis pour l'URL échappée.
{
"protocol_handlers": [
{
"protocol": "web+tea",
"url": "/tea?type=%s"
},
{
"protocol": "web+coffee",
"url": "/coffee?type=%s"
}
]
}
Plusieurs applications s'enregistrent pour le même protocole
Si plusieurs applications s'enregistrent en tant que gestionnaires pour le même schéma (par exemple, le protocole mailto
), le système d'exploitation affiche un sélecteur à l'utilisateur et lui permet de choisir le gestionnaire enregistré à utiliser.
La même application s'enregistre pour plusieurs protocoles
Comme vous pouvez le voir dans l'exemple de code ci-dessus, la même application peut s'enregistrer pour plusieurs protocoles.
Mises à jour de l'application et enregistrement du gestionnaire
Les enregistrements de gestionnaire sont synchronisés avec la dernière version du fichier manifeste fournie par l'application. Il existe deux cas :
- Une mise à jour qui ajoute de nouveaux gestionnaires déclenche l'enregistrement des gestionnaires (distinct de l'installation de l'application).
- Une mise à jour qui supprime des gestionnaires déclenche la désinscription des gestionnaires (distincte de la désinstallation de l'application).
Débogage du gestionnaire de protocoles dans les outils de développement
Accédez à la section Protocol Handlers (Gestionnaires de protocoles) dans le volet Application > Manifest (Application > Manifeste). Vous pouvez afficher et tester tous les protocoles disponibles ici.
Considérations de sécurité
Étant donné que l'installation d'une PWA nécessite que le contexte soit sécurisé, la gestion des protocoles hérite de cette contrainte. La liste des gestionnaires de protocoles enregistrés n'est en aucun cas exposée au Web. Elle ne peut donc pas être utilisée comme vecteur d'empreinte numérique.
Tentatives de navigation non initiées par l'utilisateur
Les tentatives de navigation qui ne sont pas initiées par l'utilisateur, mais qui sont programmatiques, peuvent ne pas ouvrir d'applications. L'URL de protocole personnalisé ne peut être utilisée que dans des contextes de navigation de premier niveau, mais pas, par exemple, comme URL d'iframe.
Liste d'autorisation des protocoles
Comme pour registerProtocolHandler()
, il existe une liste d'autorisation des protocoles que les applications peuvent enregistrer pour gérer.
Invite de consentement
Lors du premier lancement de la PWA en raison d'un protocole appelé, une boîte de dialogue d'autorisation s'affiche. Cette boîte de dialogue affiche le nom et l'origine de l'application, et demande à l'utilisateur si l'application est autorisée à gérer les liens du protocole. Si un utilisateur refuse la boîte de dialogue d'autorisation, le gestionnaire de protocoles enregistré sera ignoré par le système d'exploitation. Pour annuler l'enregistrement du gestionnaire de protocole, l'utilisateur doit désinstaller la PWA qui l'a enregistré. Le navigateur désenregistrera également le gestionnaire de protocoles si l'utilisateur sélectionne "Mémoriser mon choix" et "Refuser".
Commentaires
L'équipe Chromium aimerait connaître votre expérience concernant l'enregistrement du gestionnaire de protocoles d'URL pour les PWA.
Parlez-nous de la conception de l'API
Y a-t-il un aspect de l'API qui ne fonctionne pas comme prévu ? Ou bien manquent-ils des méthodes ou des propriétés dont vous avez besoin pour mettre en œuvre votre idée ? Vous avez une question ou un commentaire sur le modèle de sécurité ? Signalez un problème lié aux spécifications dans le dépôt GitHub correspondant ou ajoutez vos commentaires à un problème existant.
Signaler un problème d'implémentation
Avez-vous trouvé un bug dans l'implémentation de Chromium ? Ou l'implémentation est-elle différente de la spécification ?
Signalez un bug sur new.crbug.com. Veillez à inclure autant de détails que possible, des instructions simples pour reproduire le problème et saisissez UI>Browser>WebAppInstalls
dans la zone Composants.
Soutenir l'API
Prévoyez-vous d'utiliser l'enregistrement du gestionnaire de protocoles d'URL pour les PWA ? Votre soutien public aide l'équipe Chromium à hiérarchiser les fonctionnalités et montre aux autres fournisseurs de navigateurs à quel point il est essentiel de les prendre en charge.
Expliquez comment vous prévoyez de l'utiliser dans le fil de discussion WICG Discourse. Envoyez un tweet à @ChromiumDev avec le hashtag #ProtocolHandler
pour nous indiquer où et comment vous l'utilisez.
Liens utiles
Remerciements
L'enregistrement du gestionnaire de protocoles d'URL pour les PWA a été implémenté et spécifié par Fabio Rocha, Diego González, Connor Moody et Samuel Tang de l'équipe Microsoft Edge. Cet article a été examiné par Joe Medley et Fabio Rocha. Image principale de JJ Ying sur Unsplash.