Zezwalaj zainstalowanym aplikacjom PWA na obsługę linków korzystających z określonego protokołu, aby zapewnić lepszą integrację.
Informacje o schematach (czyli protokołach)
Ujednolicony identyfikator zasobu (URI) to zwarty ciąg znaków, który identyfikuje zasób abstrakcyjny lub fizyczny. Każdy identyfikator URI zaczyna się od nazwy schematu, która odnosi się do specyfikacji przypisywania identyfikatorów w ramach tego schematu. Dlatego składnia identyfikatora URI jest federacyjnym i rozszerzalnym systemem nazewnictwa, w którym specyfikacja każdego schematu może dodatkowo ograniczać składnię i semantykę identyfikatorów korzystających z tego schematu. Schematy są też nazywane protokołami. Poniżej znajdziesz przykłady schematów.
tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/
Termin Uniform Resource Locator (URL) odnosi się do podzbioru identyfikatorów URI, które oprócz identyfikacji zasobu umożliwiają jego lokalizację przez opisanie jego podstawowego mechanizmu dostępu (np. lokalizacji sieciowej).
Informacje o metodzie registerProtocolHandler()
Metoda Navigator, która działa tylko w przypadku bezpiecznych treści, registerProtocolHandler() umożliwia witrynom rejestrowanie możliwości otwierania lub obsługi określonych schematów URI adresu URL. Dlatego witryny muszą wywoływać metodę w ten sposób: navigator.registerProtocolHandler(scheme, url). Te 2 parametry są zdefiniowane w ten sposób:
scheme: ciąg znaków zawierający protokół, który witryna chce obsługiwać.url: ciąg znaków zawierający adres URL modułu obsługi. Ten adres URL musi zawierać%sjako obiekt zastępczy, który zostanie zastąpiony przez adres URL z kodowaniem procentowym, który ma zostać obsłużony.
Schemat musi być jednym ze
schematów na liście dozwolonych
(np. mailto, bitcoin lub magnet) lub zaczynać się od web+, po którym web+ następuje co najmniej 1
mała litera ASCII, np. web+coffee.
Aby to wyjaśnić, oto konkretny przykład procesu:
- Użytkownik odwiedza witrynę
https://coffeeshop.example.com/, która wykonuje to wywołanie:navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s'). - Później, podczas wizyty na stronie
https://randomsite.example.com/, użytkownik klika link, np.<a href="web+coffee:latte-macchiato">All about latte macchiato</a>. - Spowoduje to przejście przeglądarki na ten adres URL:
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. Ciąg wyszukiwania zdekodowany z adresu URL będzie wyglądać tak:?type=web+coffee://latte-macchiato.
Na czym polega obsługa protokołów
Obecny mechanizm rejestracji modułu obsługi protokołu URL na potrzeby PWA polega na oferowaniu rejestracji modułu obsługi protokołu w ramach instalacji PWA za pomocą pliku manifestu. Po zarejestrowaniu aplikacji PWA jako modułu obsługi protokołu, gdy użytkownik kliknie hiperlink z określonym schematem, np. mailto, bitcoin lub web+music, w przeglądarce lub aplikacji na konkretną platformę, zarejestrowana aplikacja PWA otworzy się i otrzyma adres URL. Warto zauważyć, że zarówno proponowana rejestracja na podstawie pliku manifestu, jak i tradycyjna metoda registerProtocolHandler() odgrywają w praktyce bardzo podobne role, a jednocześnie umożliwiają uzupełniające się wrażenia użytkownika:
- Podobieństwa obejmują wymagania dotyczące listy schematów, które można zarejestrować, oraz nazwy i formatu parametrów itp.
- Różnice w rejestracji na podstawie pliku manifestu są subtelne, ale mogą być przydatne do poprawy wrażeń użytkowników PWA. Na przykład rejestracja aplikacji PWA na podstawie pliku manifestu może nie wymagać dodatkowego działania użytkownika poza zainicjowaną przez niego instalacją aplikacji PWA.
Przypadki użycia
- W PWA do edycji tekstu użytkownik napotyka w dokumencie link do prezentacji, np.
web+presentations://deck2378465. Gdy użytkownik kliknie link, PWA prezentacji automatycznie otworzy się w odpowiednim zakresie i wyświetli slajdy. - W aplikacji do obsługi czatu na danej platformie użytkownik otrzymuje w wiadomości na czacie link do adresu URL
magnet. Po kliknięciu linku uruchamia się zainstalowana aplikacja PWA do torrentów i rozpoczyna się pobieranie. - Użytkownik ma zainstalowaną aplikację PWA do strumieniowego przesyłania muzyki. Gdy znajomy udostępni link do utworu, np.
web+music://songid=1234&time=0:13, a użytkownik go kliknie, aplikacja PWA do strumieniowego przesyłania muzyki automatycznie uruchomi się w osobnym oknie.
Jak korzystać z rejestracji modułu obsługi protokołu URL na potrzeby PWA
Interfejs API do rejestracji modułu obsługi protokołu URL jest wzorowany na interfejsie navigator.registerProtocolHandler(). Tym razem informacje są przekazywane deklaratywnie za pomocą pliku manifestu aplikacji internetowej w nowej właściwości o nazwie "protocol_handlers", która przyjmuje tablicę obiektów z 2 wymaganymi kluczami: "protocol" i "url". Poniższy fragment kodu pokazuje, jak zarejestrować web+tea i web+coffee. Wartości to ciągi znaków zawierające adres URL modułu obsługi z wymaganą zmienną %s dla adresu URL z kodowaniem znaków specjalnych.
{
"protocol_handlers": [
{
"protocol": "web+tea",
"url": "/tea?type=%s"
},
{
"protocol": "web+coffee",
"url": "/coffee?type=%s"
}
]
}
Wiele aplikacji rejestrujących się w tym samym protokole
Jeśli kilka aplikacji zarejestruje się jako moduły obsługi tego samego schematu, na przykład protokołu mailto, system operacyjny wyświetli użytkownikowi selektor i pozwoli mu zdecydować, którego z zarejestrowanych modułów obsługi chce użyć.
Ta sama aplikacja rejestruje się w przypadku wielu protokołów.
Ta sama aplikacja może zarejestrować się w przypadku wielu protokołów, jak widać w przykładowym kodzie.
Aktualizacje aplikacji i rejestracja modułu obsługi
Rejestracje modułów obsługi są synchronizowane z najnowszą wersją pliku manifestu dostarczoną przez aplikację. Są 2 przypadki:
- Aktualizacja, która dodaje nowe moduły obsługi, powoduje ich rejestrację (niezależnie od instalacji aplikacji).
- Aktualizacja, która usuwa moduły obsługi, powoduje wyrejestrowanie modułu obsługi (niezależnie od odinstalowania aplikacji).
Debugowanie modułu obsługi protokołu w Narzędziach deweloperskich
Przejdź do sekcji Moduły obsługi protokołów, korzystając z panelu Aplikacja > Plik manifestu. Tutaj możesz wyświetlić i przetestować wszystkie dostępne protokoły.

Bezpieczeństwo
Instalacja PWA wymaga bezpiecznego kontekstu, więc obsługa protokołu dziedziczy to ograniczenie. Lista zarejestrowanych modułów obsługi protokołów nie jest w żaden sposób udostępniana w internecie, więc nie można jej używać jako wektora odcisków cyfrowych.
Próby nawigacji nieinicjowane przez użytkownika
Próby nawigacji, które nie są inicjowane przez użytkownika, ale są automatyczne, nie mogą otwierać aplikacji. Adres URL protokołu niestandardowego może być używany tylko w kontekstach przeglądania najwyższego poziomu, ale nie np. jako adres URL elementu iframe.
Lista dozwolonych protokołów
Podobnie jak w przypadku registerProtocolHandler() istnieje lista dozwolonych protokołów, które aplikacje mogą rejestrować do obsługi.
Prośba o zgodę
Przy pierwszym uruchomieniu PWA z powodu wywołanego protokołu użytkownik zobaczy okno z prośbą o uprawnienia. W tym oknie pojawi się nazwa i źródło aplikacji oraz pytanie, czy aplikacja może obsługiwać linki z protokołu. Jeśli użytkownik odrzuci okno uprawnień, zarejestrowany moduł obsługi protokołu zostanie zignorowany przez system operacyjny. Aby wyrejestrować moduł obsługi protokołu, użytkownik musi odinstalować aplikację PWA, która go zarejestrowała. Przeglądarka wyrejestruje też moduł obsługi protokołu, jeśli użytkownik wybierze „Zapamiętaj mój wybór” i „Nie zezwalaj”.
Prześlij opinię
Zespół Chromium chce poznać Twoją opinię na temat rejestracji modułu obsługi protokołu URL na potrzeby PWA.
Opisz projekt interfejsu API
Czy coś w interfejsie API nie działa zgodnie z oczekiwaniami? A może brakuje metod lub właściwości, które są Ci potrzebne do zrealizowania pomysłu? Masz pytanie lub komentarz dotyczący modelu zabezpieczeń? Zgłoś problem ze specyfikacją w odpowiednim repozytorium GitHub lub dodaj swoje uwagi do istniejącego problemu.
Zgłaszanie problemu z implementacją
Czy udało Ci się znaleźć błąd we wdrożeniu Chromium? A może implementacja różni się od specyfikacji?
Zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów i instrukcje odtworzenia błędu, a w polu Components (Komponenty) wpisz UI>Browser>WebAppInstalls.
Wsparcie dla interfejsu API
Czy planujesz używać rejestracji modułu obsługi protokołu URL na potrzeby PWA? Twoje publiczne wsparcie pomaga zespołowi Chromium ustalać priorytety funkcji i pokazuje innym dostawcom przeglądarek, jak ważne jest ich obsługiwanie.
Podziel się swoimi planami dotyczącymi korzystania z tego interfejsu w wątku na forum WICG. Wyślij tweeta do @ChromiumDev z hasztagiem #ProtocolHandler i daj nam znać, gdzie i jak używasz tej funkcji.
Przydatne linki
Podziękowania
Rejestracja modułu obsługi protokołu URL na potrzeby PWA została zaimplementowana i określona przez Fabio Rochę, Diego Gonzáleza, Connora Moody'ego i Samuela Tanga z zespołu Microsoft Edge. Ten dokument został sprawdzony przez Joe Medleya i Fabio Rochę.