Legen Sie fest, wie Ihre App gestartet wird.
Mit der Launch Handler API kannst du steuern, wie deine App gestartet wird, z. B. ob ein vorhandenes oder ein neues Fenster verwendet wird und ob im ausgewählten Fenster die Start-URL aufgerufen wird. Wie bei der File Handing API wird auch hier ein LaunchParams
-Objekt im window.launchQueue
der gestarteten Seite in die Warteschlange gestellt.
Aktueller Status
Step | Status |
---|---|
1. Erklärende Mitteilung erstellen | Abschließen |
2. Ersten Entwurf der Spezifikation erstellen | Abschließen |
3. Feedback einholen und Design iterieren | Abschließen |
4. Ursprungstest. | Abschließen |
5. Launch | Abschließen |
Launch Handler API verwenden
Unterstützte Browser
Launch-Handler ist nur unter ChromeOS verfügbar.
Interfaces
Die Launch Handler API definiert zwei neue Schnittstellen.
LaunchParams
: Ein Objekt, das die targetURL
enthält, die vom Nutzer verarbeitet werden soll.
LaunchQueue
: Warteschlangen werden gestartet, bis sie vom angegebenen Nutzer verarbeitet werden.
Manifest-Mitglied launch_handler
Wenn du das Startverhalten deiner App deklarativ angeben möchtest, füge deinem Manifest das Manifestmitglied launch_handler
hinzu. Es hat ein untergeordnetes Feld namens client_mode
. Damit können Sie steuern, ob ein neuer oder ein vorhandener Client gestartet und ob dieser Client aufgerufen werden soll. Das folgende Beispiel zeigt eine Datei mit beispielhaften Werten, mit 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. Für die Unterfelder sind folgende Werte zulässig:
client_mode
:navigate-new
: In einem Webanwendungsfenster wird ein neuer Browserkontext erstellt, um die Ziel-URL des Starts zu laden.navigate-existing
: Die zuletzt mit dem Browserkontext in einem Webanwendungsfenster interagierte wird zur Ziel-URL des Starts geleitet.focus-existing
: Für den Start wird die letzte Interaktion mit dem Browserkontext in einem Webanwendungsfenster ausgewählt. Ein neuesLaunchParams
-Objekt, bei demtargetURL
auf die Start-URL festgelegt ist, wird in die Warteschlangewindow.launchQueue
des Dokuments gestellt.auto
: Die Funktionsweise hängt vom User-Agent ab, um zu entscheiden, was für die Plattform am besten funktioniert. Mobilgeräte unterstützen beispielsweise nur einzelne Clients und verwendenexisting-client
, während Desktopgeräte mehrere Fenster unterstützen undnavigate-new
verwenden, um Datenverluste zu vermeiden.
Für das Attribut client_mode
kann auch eine Liste (Array) von Werten verwendet werden, wobei der erste gültige Wert verwendet wird. Auf diese Weise können neue Werte zur Spezifikation hinzugefügt werden, ohne die Abwärtskompatibilität mit vorhandenen Implementierungen zu beeinträchtigen.
Wenn beispielsweise der hypothetische Wert "focus-matching-url"
hinzugefügt wird, geben Websites "client_mode": ["focus-matching-url", "navigate-existing"]
an, um das Verhalten älterer Browser weiter zu steuern, die "focus-matching-url"
nicht unterstützt haben.
window.launchQueue verwenden
Im folgenden Code extrahiert die Funktion extractSongID()
ein songID
aus der URL, die beim Start übergeben wurde. 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
In der Demo des PWA-Launch-Handlers können Sie sich eine Demo der Launch Handler API in Aktion ansehen. 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 auf einem ChromeOS-Gerät.
- Senden Sie sich selbst einen Link in einer Chatanwendung im Format
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. Sie könnenhttps://example.com/music.mp3
für jede URL anpassen, 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.
- Wenn Sie noch einmal auf den Link in der Chat-App klicken, werden Sie feststellen, dass Sie keine zweite Instanz von Musicr 2.0 erhalten.
Feedback
Das Chromium-Team möchte mehr über deine Erfahrungen mit der Launch Handler API erfahren.
Erzähl uns etwas über das API-Design
Gibt es etwas an der API, das nicht wie erwartet funktioniert? Oder fehlen Methoden oder Eigenschaften, die Sie zur Umsetzung Ihrer Idee benötigen? Haben Sie eine Frage oder einen Kommentar zum Sicherheitsmodell? Reichen Sie ein Spezifikationsproblem 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 weicht die Implementierung von der Spezifikation ab?
Melden Sie einen Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich und eine einfache Anleitung zur Reproduktion an. Geben Sie dann Blink>AppManifest
in das Feld Komponenten ein.
Glitch eignet sich hervorragend, um schnelle und einfache Reproduktionen zu teilen.
Unterstützung für die API anzeigen
Möchtest du die Launch Handler API verwenden? Dein öffentlicher Support hilft dem Chromium-Team, Funktionen zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig der Support für sie ist.
Schicken Sie uns unter dem Hashtag #LaunchHandler
einen Tweet an @ChromiumDev und teilen Sie uns mit, wo und wie Sie ihn verwenden.