kontrolować sposób uruchamiania aplikacji;
Interfejs Launch Handler API umożliwia kontrolowanie sposobu uruchamiania aplikacji, np. czy ma ona używać istniejącego czy nowego okna i czy wybrane okno ma przejść do adresu URL uruchamiania. Podobnie jak w przypadku interfejsu API do obsługi plików, powoduje to również umieszczenie obiektu LaunchParams
w kole window.launchQueue
strony, która została otwarta.
Obecny stan,
Krok | Stan |
---|---|
1. Tworzenie wyjaśnienia | Zakończono |
2. Tworzenie wstępnej wersji specyfikacji | Zakończono |
3. Zbieraj opinie i ulepszaj projekt | Zakończone |
4. Wersja próbna Origin. | Zakończone |
5. Wprowadzenie na rynek | 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 do momentu ich obsłużenia przez określonego konsumenta.
Element launch_handler
w pliku manifestu
Aby deklaratywnie określić sposób uruchamiania aplikacji, dodaj do pliku manifestu element launch_handler
. Ma ono 1 pole podrzędne o nazwie client_mode
. Umożliwia określenie, czy ma zostać uruchomiony nowy czy istniejący klient oraz czy ma być wyświetlony. Ten przykład pokazuje plik z przykładowymi wartościami, który zawsze kieruje wszystkie uruchomienia do nowego klienta.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Jeśli nie podasz wartości, launch_handler
przyjmie wartość domyślną {"client_mode": "auto"}
. Dozwolone wartości w podpolach:
client_mode
:navigate-new
: w oknie aplikacji internetowej tworzony jest nowy kontekst przeglądania, aby wczytać docelowy adres URL.navigate-existing
: ostatnio używany kontekst przeglądania w oknie aplikacji internetowej przekierowuje do docelowego adresu URL uruchamiania.focus-existing
: do uruchomienia wybierana jest aplikacja, z którą użytkownik ostatnio wszedł w interakcję w oknie aplikacji internetowej. Nowy obiektLaunchParams
z wartościątargetURL
ustawioną na adres URL uruchamiania zostanie umieszczony w kolewindow.launchQueue
dokumentu.auto
: zachowanie zależy od klienta użytkownika, który decyduje, co działa najlepiej na danej platformie. Na przykład urządzenia mobilne obsługują tylko pojedynczych klientów i używająexisting-client
, podczas gdy urządzenia stacjonarne obsługują wiele okien i używająnavigate-new
, aby uniknąć utraty danych.
Właściwość client_mode
akceptuje też listę (tablicę) wartości, z których zostanie użyta pierwsza prawidłowa wartość. Pozwala to dodawać nowe wartości do specyfikacji bez naruszania zgodności wstecznej z dotychczasowymi implementacjami.
Jeśli na przykład dodamy hipotetyczną wartość "focus-matching-url"
, witryny będą określać wartość "client_mode": ["focus-matching-url", "navigate-existing"]
, aby zachować kontrolę nad działaniem starszych przeglądarek, które nie obsługują wartości "focus-matching-url"
.
Używanie window.launchQueue
W tym kodzie funkcja extractSongID()
wyodrębnia wartość songID
z adresu URL przekazanego podczas uruchamiania. Służy do odtwarzania utworu w aplikacji internetowej odtwarzacza muzyki.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
Prezentacja
Demo interfejsu Launch Handler API można zobaczyć w demo uchwytu uruchamiania PWA. Sprawdź kod źródłowy aplikacji, aby zobaczyć, jak używa on interfejsu Launch Handler API.
- Zainstaluj aplikację Musicr 2.0.
- Wyślij do siebie link w aplikacji do czatu w formacie
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (możesz dostosować adreshttps://example.com/music.mp3
do dowolnego adresu URL wskazującego na plik audio, np.https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Kliknij link w aplikacji czatu, a następnie zobacz, jak Musicr 2.0 otwiera i odtwarza utwór.
- Ponownie kliknij link w aplikacji czatu. Nie pojawi się druga instancja Musicr 2.0.
Prześlij opinię
Zespół Chromium chce poznać Twoje wrażenia związane z interfejsem Launch Handler API.
Prześlij informacje o projektowaniu interfejsu API
Czy coś w interfejsie API nie działa zgodnie z oczekiwaniami? A może brakuje metod lub właściwości, których potrzebujesz do wdrożenia swojego pomysłu? Masz pytania lub uwagi dotyczące modelu bezpieczeństwa? Zgłoś problem ze specyfikacją w odpowiednim repozytorium GitHub lub dodaj swoje uwagi do istniejącego problemu.
Zgłaszanie problemów z implementacją
Czy znalazłeś 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, instrukcje odtwarzania błędu i wpisz Blink>AppManifest
w polu Components.
Glitch świetnie sprawdza się do udostępniania szybkich reprosów.
Pokaż pomoc dotyczącą interfejsu API
Czy planujesz używać interfejsu Launch Handler API? Twoja publiczna pomoc pomaga zespołowi Chromium ustalać priorytety funkcji i pokazuje innym dostawcom przeglądarek, jak ważne jest ich wsparcie.
Wyślij tweeta do @ChromiumDev, używając hashtaga #LaunchHandler
, i podaj, gdzie i jak z niego korzystasz.