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 obiektLaunchParamsz atrybutemtargetURLustawionym na adres URL uruchomienia zostanie umieszczony w kolejce wwindow.launchQueuedokumentu.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.mp3dla 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