Festlegen, wie Ihre App gestartet wird
Mit der Launch Handler API können Sie festlegen, wie Ihre App gestartet wird, z. B. ob ein vorhandenes oder ein neues Fenster verwendet wird und ob das ausgewählte Fenster zur Start-URL weitergeleitet wird. Wie bei der File Handling API wird auch hier ein LaunchParams
-Objekt in die window.launchQueue
der gestarteten Seite eingereiht.
Aktueller Status
Schritt | Status |
---|---|
1. Erläuternde Mitteilung erstellen | Abschließen |
2. Ersten Entwurf der Spezifikation erstellen | Abschließen |
3. Feedback einholen und Design iterieren | Abgeschlossen |
4. Ursprungstest. | Abgeschlossen |
5. Launch | Abschließen |
Launch Handler API verwenden
Unterstützte Browser
Interfaces
Die Launch Handler API definiert zwei neue Schnittstellen.
LaunchParams
: Ein Objekt, das die vom Verbraucher zu verarbeitende targetURL
enthält.
LaunchQueue
: Die Warteschlangen werden gestartet, bis sie vom angegebenen Verbraucher verarbeitet werden.
Manifest-Mitglied launch_handler
Wenn du das Startverhalten deiner App deklarativ angeben möchtest, füge das Manifestmitglied launch_handler
hinzu
zu deinem Manifest hinzuzufügen. Es hat ein untergeordnetes Feld namens client_mode
. Sie können damit festlegen, ob ein neuer oder ein vorhandener Client gestartet werden soll und ob dieser Client gesteuert werden soll. Das folgende Beispiel zeigt eine Datei mit Beispielwerten, bei denen alle Starts immer an einen neuen Client weitergeleitet werden.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Wenn kein Wert angegeben ist, wird launch_handler
standardmäßig auf {"client_mode": "auto"}
gesetzt. Zulässige Werte für die untergeordneten Felder:
client_mode
:navigate-new
: In einem Webanwendungsfenster wird ein neuer Browserkontext erstellt, um das Ziel des Starts zu laden. URLnavigate-existing
: Der Nutzer, der zuletzt mit dem Browserkontext in einer Webanwendung interagiert hat wird zur Ziel-URL des Starts navigiert.focus-existing
: Der Browserkontext, mit dem zuletzt in einem Web-App-Fenster interagiert wurde, wird für die Ausführung ausgewählt. Ein neuesLaunchParams
-Objekt, dessentargetURL
auf den Wert Start-URL wird in diewindow.launchQueue
des Dokuments eingereiht.auto
: Das Verhalten hängt davon ab, was für die Plattform am besten geeignet ist. Beispielsweise unterstützen Mobilgeräte nur einzelne Clients und würdenexisting-client
verwenden, während Desktop-Geräte mehrere Fenster unterstützen undnavigate-new
verwenden würden, um Datenverluste zu vermeiden.
Für das Attribut client_mode
kann auch eine Liste (Array) von Werten verwendet werden. Der erste gültige Wert ist dabei
verwendet. So können der Spezifikation neue Werte hinzugefügt werden, ohne die Abwärtskompatibilität mit vorhandenen Implementierungen zu gefährden.
Wird beispielsweise der hypothetische Wert "focus-matching-url"
hinzugefügt, geben die Websites
"client_mode": ["focus-matching-url", "navigate-existing"]
, um das Gerät weiter zu steuern
Verhalten älterer Browser, die "focus-matching-url"
nicht unterstützt haben.
window.launchQueue verwenden
Im folgenden Code extrahiert die Funktion extractSongID()
ein songID
aus der URL
die bei der Markteinführung
übergangen wurden. Damit wird ein Song in der PWA eines Musikplayers abgespielt.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
Demo
Eine Demo der Launch Handler API in Aktion finden Sie in der Demo für den PWA-Launch Handler. Sehen Sie sich den Quellcode der Anwendung an, um zu sehen, wie die Launch Handler API verwendet wird.
- Installieren Sie die Musicr 2.0 App.
- Senden Sie sich selbst einen Link in einer Chat-Anwendung im Format
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Sie könnenhttps://example.com/music.mp3
für jede URL, die auf eine Audiodatei verweist, z. B.https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Klicke auf den Link in deiner Chat-App und sieh nach, wie Musicr 2.0 geöffnet wird und den Titel wiedergibt.
- Klicken Sie noch einmal auf den Link in der Chat-App und stellen Sie fest, dass Sie keine zweite Instanz von Musicr 2.0:
Feedback
Das Chromium-Team möchte mehr über Ihre Erfahrungen mit der Launch Handler API erfahren.
Informationen zum API-Design
Funktioniert die API nicht wie erwartet? Oder fehlen Methoden oder Eigenschaften, die Sie zur Implementierung Ihrer Idee benötigen? Haben Sie Fragen oder Kommentare zum Sicherheitsmodell? Reichen Sie ein Problem mit der Spezifikation im entsprechenden GitHub-Repository ein oder fügen Sie Ihre Gedanken zu einem vorhandenen Problem hinzu.
Problem mit der Implementierung melden
Hast du einen Fehler bei der Implementierung von Chromium gefunden? Oder unterscheidet sich die Implementierung von der Spezifikation?
Melde einen Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich an,
für die Reproduktion und gib Blink>AppManifest
in das Feld Komponenten ein.
Glitch eignet sich hervorragend, um schnelle Reproduzierungen zu teilen.
Unterstützung für die API anzeigen
Beabsichtigen Sie, die Launch Handler API zu verwenden? Dein öffentlicher Support hilft dem Chromium-Team Funktionen priorisieren und anderen Browseranbietern zeigen, wie wichtig es für ihre Unterstützung ist.
Sende einen Tweet mit dem Hashtag an @ChromiumDev
#LaunchHandler
und
lassen Sie uns wissen, wo und wie Sie sie verwenden.