Laat geïnstalleerde PWA's links afhandelen die een specifiek protocol gebruiken voor een meer geïntegreerde ervaring.
Achtergrondinformatie over schema's (ook wel protocollen genoemd)
Een Uniform Resource Identifier (URI) is een compacte reeks tekens die een abstracte of fysieke bron identificeert. Elke URI begint met een schemanaam die verwijst naar een specificatie voor het toewijzen van identificatoren binnen dat schema. De URI-syntaxis is daarmee een gefedereerd en uitbreidbaar naamgevingssysteem, waarbij de specificatie van elk schema de syntaxis en semantiek van identificatoren die dat schema gebruiken verder kan beperken. Schema's worden ook wel protocollen genoemd. U kunt enkele voorbeelden van schema's bekijken.
tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/
De term Uniform Resource Locator (URL) verwijst naar de subset van URI's die, naast het identificeren van een bron, een middel bieden om de bron te lokaliseren door het primaire toegangsmechanisme te beschrijven (bijvoorbeeld de netwerklocatie).
Achtergrondinformatie over de registerProtocolHandler() methode
De Navigator methode registerProtocolHandler() alleen toegang biedt tot beveiligde content, stelt websites in staat om te registreren of ze bepaalde URL-schema's mogen openen of verwerken. Websites moeten de methode daarom als volgt aanroepen: navigator.registerProtocolHandler(scheme, url) . De twee parameters worden als volgt gedefinieerd:
-
scheme: Een tekenreeks die het protocol bevat dat de site wil ondersteunen. -
url: Een tekenreeks met de URL van de handler. Deze URL moet%sbevatten als placeholder, die wordt vervangen door de geëscapte URL die moet worden verwerkt.
Het schema moet ofwel een van de veilige schema's zijn (bijvoorbeeld mailto , bitcoin of magnet ) of beginnen met web+ , gevolgd door ten minste één of meer kleine ASCII-letters na het voorvoegsel web+ , zoals web+coffee .
Om dit te verduidelijken, volgt hier een concreet voorbeeld van het proces:
- De gebruiker bezoekt een site op
https://coffeeshop.example.com/die de volgende aanroep doet:navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s'). - Op een later moment, tijdens een bezoek aan
https://randomsite.example.com/, klikt de gebruiker op een link zoals<a href="web+coffee:latte-macchiato">All about latte macchiato</a>. - Hierdoor navigeert de browser naar de volgende URL:
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. De URL-gedecodeerde zoekstring luidt dan?type=web+coffee://latte-macchiato.
Waar protocolafhandeling over gaat
Het huidige mechanisme voor het registreren van URL-protocolhandlers voor PWA's biedt de mogelijkheid om protocolhandlerregistratie als onderdeel van een PWA-installatie via het manifest aan te bieden. Nadat een PWA als protocolhandler is geregistreerd, zal de geregistreerde PWA de URL ontvangen wanneer een gebruiker klikt op een hyperlink met een specifiek schema, zoals mailto , bitcoin of web+music vanuit een browser of een platformspecifieke app. Het is belangrijk om te benadrukken dat zowel de voorgestelde manifestgebaseerde registratie als de traditionele registerProtocolHandler() in de praktijk een zeer vergelijkbare rol spelen, terwijl ze toch de mogelijkheid bieden voor complementaire gebruikerservaringen.
- Overeenkomsten zijn er onder meer in de eisen met betrekking tot de lijst van regelingen die mogen worden geregistreerd, en de naam en het formaat van parameters, enzovoort.
- De verschillen in de op manifesten gebaseerde registratie zijn subtiel, maar kunnen nuttig zijn om de ervaring voor PWA-gebruikers te verbeteren. Zo vereist een op manifesten gebaseerde PWA-registratie mogelijk geen extra gebruikersactie naast de door de gebruiker geïnitieerde installatie van de PWA.
Gebruiksvoorbeelden
- In een tekstverwerkings-PWA komt de gebruiker in een document een link tegen naar een presentatie, bijvoorbeeld
web+presentations://deck2378465. Wanneer de gebruiker op de link klikt, wordt de presentatie-PWA automatisch geopend in het juiste bereik en wordt de presentatie weergegeven. - In een platformspecifieke chat-app ontvangt de gebruiker in een chatbericht een link naar een
magnetURL. Na het klikken op de link wordt een geïnstalleerde torrent-PWA gestart en begint de download. - De gebruiker heeft een PWA voor muziekstreaming geïnstalleerd. Wanneer een vriend een link naar een nummer deelt, zoals
web+music://songid=1234&time=0:13, en de gebruiker erop klikt, wordt de PWA voor muziekstreaming automatisch in een apart venster geopend.
Hoe gebruik je URL-protocolhandlerregistratie voor PWA's?
De API voor het registreren van URL-protocolhandlers is sterk gebaseerd op navigator.registerProtocolHandler() . Alleen wordt de informatie ditmaal declaratief doorgegeven via het web-app-manifest in een nieuwe eigenschap genaamd "protocol_handlers" Deze eigenschap accepteert een array van objecten met de twee vereiste sleutels "protocol" en "url" . Het volgende codefragment laat zien hoe web+tea en web+coffee geregistreerd kunnen worden. De waarden zijn strings die de URL van de handler bevatten, met de vereiste %s placeholder voor de ontsnapte URL.
{
"protocol_handlers": [
{
"protocol": "web+tea",
"url": "/tea?type=%s"
},
{
"protocol": "web+coffee",
"url": "/coffee?type=%s"
}
]
}
Meerdere apps die zich registreren voor hetzelfde protocol.
Als meerdere applicaties zich registreren als handlers voor hetzelfde schema, bijvoorbeeld het mailto protocol, zal het besturingssysteem de gebruiker een keuzemenu tonen waarmee deze kan bepalen welke van de geregistreerde handlers gebruikt moet worden.
Dezelfde app die zich registreert voor meerdere protocollen.
Dezelfde app kan zich registreren voor meerdere protocollen, zoals je in het codevoorbeeld kunt zien.
App-updates en handlerregistratie
De handler-registraties worden gesynchroniseerd met de nieuwste manifestversie die door de app wordt aangeleverd. Er zijn twee gevallen:
- Een update die nieuwe handlers toevoegt, activeert de registratie van de handlers (los van de app-installatie).
- Een update die handlers verwijdert, leidt tot de de-registratie van de handlers (dit gebeurt los van de verwijdering van de app).
Foutopsporing in protocolhandler in DevTools
Ga naar de sectie Protocolhandlers via het paneel Toepassing > Manifest . Hier kunt u alle beschikbare protocollen bekijken en testen.

Veiligheidsaspecten
Omdat de installatie van een PWA een beveiligde context vereist, is deze beperking ook van toepassing op de protocolafhandeling. De lijst met geregistreerde protocolhandlers wordt op geen enkele manier aan het web blootgesteld en kan daarom niet worden gebruikt als een manier om een identiteit te achterhalen.
Niet door de gebruiker geïnitieerde navigatiepogingen
Navigatiepogingen die niet door de gebruiker worden geïnitieerd, maar programmatisch zijn, openen mogelijk geen apps. De aangepaste protocol-URL mag alleen worden gebruikt in de hoofdcontext van de browser, maar bijvoorbeeld niet als de URL van een iframe.
Toegestane lijst met protocollen
Net als bij registerProtocolHandler() is er een lijst met toegestane protocollen die apps kunnen registreren om te verwerken.
Toestemmingsverzoek
Bij de eerste keer dat de PWA wordt gestart via een aangeroepen protocol, krijgt de gebruiker een dialoogvenster te zien waarin om toestemming wordt gevraagd. In dit dialoogvenster worden de naam en herkomst van de app weergegeven en wordt de gebruiker gevraagd of de app links van het protocol mag verwerken. Als de gebruiker het dialoogvenster weigert, wordt de geregistreerde protocolhandler door het besturingssysteem genegeerd. Om de protocolhandler te verwijderen, moet de gebruiker de PWA die deze heeft geregistreerd, verwijderen. De browser verwijdert de protocolhandler ook als de gebruiker 'Mijn keuze onthouden' selecteert en vervolgens 'Niet toestaan' kiest.
Feedback
Het Chromium-team wil graag meer horen over uw ervaringen met het registreren van URL-protocolhandlers voor PWA's.
Vertel ons iets over het API-ontwerp.
Werkt er iets aan de API niet zoals verwacht? Of ontbreken er methoden of eigenschappen die je nodig hebt om je idee te implementeren? Heb je een vraag of opmerking over het beveiligingsmodel? Dien een specificatieprobleem in op de bijbehorende GitHub-repository , of voeg je gedachten toe aan een bestaand probleem.
Meld een probleem met de implementatie.
Heb je een bug gevonden in de implementatie van Chromium? Of wijkt de implementatie af van de specificatie? Meld een bug op new.crbug.com . Vermeld zoveel mogelijk details, instructies voor het reproduceren van de bug en voer UI>Browser>WebAppInstalls in bij het veld Components .
Toon je steun voor de API
Bent u van plan om URL-protocolhandlerregistratie te gebruiken voor PWA's? Uw publieke steun helpt het Chromium-team bij het prioriteren van functies en laat andere browserleveranciers zien hoe belangrijk het is om deze te ondersteunen.
Deel op het WICG Discourse-forum hoe je het wilt gebruiken. Stuur een tweet naar @ChromiumDev met de hashtag #ProtocolHandler en laat ons weten waar en hoe je het gebruikt.
Nuttige links
Dankbetuigingen
De registratie van URL-protocolhandlers voor PWA's is geïmplementeerd en gespecificeerd door Fabio Rocha , Diego González , Connor Moody en Samuel Tang van het Microsoft Edge-team. Dit document is beoordeeld door Joe Medley en Fabio Rocha.