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 obiekt- LaunchParamsz atrybutem- targetURLustawionym na adres URL uruchomienia zostanie umieszczony w kolejce w- window.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ą symbolu- existing-client, a urządzenia stacjonarne obsługują wiele okien i używają symbolu- navigate-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 czatowaniahttps://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
