Kontrolowanie sposobu uruchamiania aplikacji.
Interfejs Launch Handler API umożliwia kontrolowanie sposobu uruchamiania aplikacji, np. czy ma ona korzystać z istniejącego czy nowego okna oraz czy wybrane okno ma być przekierowywane do adresu URL uruchomienia. Podobnie jak w przypadku File Handling API, w tym przypadku w window.launchQueue
uruchomionej strony umieszczany jest obiekt LaunchParams
.
Obecny stan,
Krok | Stan |
---|---|
1. Tworzenie wyjaśnienia | Zakończono |
2. Tworzenie wstępnej wersji specyfikacji | Zakończono |
3. Zbieranie opinii i ulepszanie projektu | Zakończone |
4. Wersja próbna origin. | Zakończone |
5. Uruchom | Zakończono |
Korzystanie z interfejsu Launch Handler API
Obsługa przeglądarek
Interfejsy
Interfejs Launch Handler API definiuje 2 nowe interfejsy.
LaunchParams
: obiekt zawierający targetURL
, który ma być obsługiwany przez konsumenta. LaunchQueue
: kolejki są uruchamiane, dopóki nie zostaną obsłużone przez określonego konsumenta.
Element manifestu launch_handler
Aby deklaratywnie określić sposób uruchamiania aplikacji, dodaj do pliku manifestu element launch_handler
. Ma ono jedno pole podrzędne o nazwie client_mode
. Umożliwia określenie, czy ma zostać uruchomiony nowy czy istniejący klient, oraz czy ma on być nawigowany. Poniższy przykład przedstawia plik z przykładowymi wartościami, które zawsze kierują wszystkie uruchomienia do nowego klienta.
{ "launch_handler": { "client_mode": "navigate-new" } }
Jeśli nie podasz tu żadnej wartości, launch_handler
przyjmie domyślnie wartość {"client_mode": "auto"}
. Dozwolone wartości pól podrzędnych to:
client_mode
:navigate-new
: w oknie aplikacji internetowej tworzony jest nowy kontekst przeglądania, aby wczytać docelowy adres URL uruchomienia.navigate-existing
: ostatnio używany kontekst przeglądania w oknie aplikacji internetowej jest przekierowywany na docelowy adres URL uruchomienia.focus-existing
: Do obsługi uruchomienia wybierany jest kontekst przeglądania, z którym ostatnio wchodzono w interakcję w oknie aplikacji internetowej. Nowy obiektLaunchParams
z atrybutemtargetURL
ustawionym na adres URL uruchomienia zostanie umieszczony w kolejce wwindow.launchQueue
dokumentu.auto
: zachowanie zależy od agenta użytkownika, który decyduje, co najlepiej sprawdza się na danej platformie. Na przykład urządzenia mobilne obsługują tylko pojedynczych klientów i używają symboluexisting-client
, a urządzenia stacjonarne obsługują wiele okien i używają symbolunavigate-new
, aby uniknąć utraty danych.
Właściwość client_mode
akceptuje też listę (tablicę) wartości, z której używana jest pierwsza prawidłowa wartość. Dzięki temu do specyfikacji można dodawać nowe wartości bez naruszania zgodności wstecznej z istniejącymi implementacjami.
Jeśli na przykład dodano by hipotetyczną wartość "focus-matching-url"
, witryny określałyby "client_mode": ["focus-matching-url", "navigate-existing"]
, aby nadal kontrolować działanie starszych przeglądarek, które nie obsługiwały "focus-matching-url"
.
Używanie window.launchQueue
W poniższym kodzie funkcja extractSongID()
wyodrębnia songID
z adresu URL przekazanego podczas uruchamiania. Służy do odtwarzania utworu w progresywnej aplikacji internetowej odtwarzacza muzyki.
if ('launchQueue' in window) { launchQueue.setConsumer((launchParams) => { if (launchParams.targetURL) { const songID = extractSongId(launchParams.targetURL); if (songID) { playSong(songID); } } }); }
Prezentacja
Wersję demonstracyjną interfejsu Launch Handler API możesz zobaczyć na stronie PWA Launch Handler Demo. Zapoznaj się z kodem źródłowym aplikacji, aby zobaczyć, jak korzysta ona z interfejsu Launch Handler API.
- Zainstaluj aplikację Musicr 2.0.
- Wyślij sobie link do formularza w aplikacji do czatowania
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3
. (Możesz dostosować parametrhttps://example.com/music.mp3
dla dowolnego adresu URL wskazującego plik audio, np.https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav
). - Kliknij link w aplikacji do czatowania i zobacz, jak otwiera się Musicr 2.0 i odtwarza utwór.
- Ponownie kliknij link w aplikacji do czatu. Zauważysz, że nie pojawi się druga instancja Musicr 2.0.
Prześlij opinię
Zespół Chromium chce poznać Twoje wrażenia związane z korzystaniem z interfejsu Launch Handler API.
Opisz projekt interfejsu API
Czy coś w API nie działa tak, jak oczekujesz? Czy brakuje metod lub właściwości, które są potrzebne do realizacji Twojego pomysłu? Masz pytania lub uwagi dotyczące 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 w implementacji 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 odtwarzania problemu, a w polu Komponenty wpisz Blink>AppManifest
.
Wyrażanie poparcia dla interfejsu API
Czy planujesz używać interfejsu Launch Handler API? Twoje publiczne wsparcie pomaga zespołowi Chromium określać priorytety funkcji i pokazuje innym dostawcom przeglądarek, jak ważne jest ich wspieranie.
Wyślij tweeta do @ChromiumDev z hasztagiem #LaunchHandler
i napisz, gdzie i jak korzystasz z tej funkcji.
Przydatne linki
- Wyjaśnienie publiczne
- Specyfikacja wersji roboczej
- Wersja demonstracyjna interfejsu Launch Handler API | Źródło wersji demonstracyjnej interfejsu Launch Handler API
- Błąd śledzenia w Chromium
- Wpis na ChromeStatus.com
- Komponent Blink:
Blink>AppManifest
- Sprawdzanie przez TAG
- Zamiar utworzenia prototypu