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 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 targetURL
enthält, die vom Nutzer verarbeitet werden soll.
LaunchQueue
: Die Warteschlangen werden gestartet, bis sie vom angegebenen Verbraucher verarbeitet werden.
Das Manifest-Element launch_handler
Wenn Sie das Startverhalten Ihrer App deklarativ angeben möchten, fügen Sie dem Manifest das Manifest-Element launch_handler
hinzu. 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 nicht angegeben, lautet die Standardeinstellung für launch_handler
{"client_mode": "auto"}
. Zulässige Werte für die untergeordneten Felder:
client_mode
:navigate-new
: In einem Web-App-Fenster wird ein neuer Browserkontext erstellt, um die Ziel-URL des Starts zu laden.navigate-existing
: Der Browserkontext, mit dem zuletzt in einem Web-App-Fenster interagiert wurde, wird zur Ziel-URL der Auslösung weitergeleitet.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
: 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 die Property client_mode
ist auch eine Liste (Array) von Werten zulässig. Dabei wird der erste gültige Wert verwendet. So können der Spezifikation neue Werte hinzugefügt werden, ohne die Abwärtskompatibilität mit vorhandenen Implementierungen zu gefährden.
Wenn beispielsweise der hypothetische Wert "focus-matching-url"
hinzugefügt würde, würden Websites "client_mode": ["focus-matching-url", "navigate-existing"]
angeben, um weiterhin das Verhalten älterer Browser zu steuern, die "focus-matching-url"
nicht unterstützen.
window.launchQueue verwenden
Im folgenden Code extrahiert die Funktion extractSongID()
einen songID
aus der URL, die beim Start übergeben wurde. Damit wird ein Titel in einer 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
. Du kannsthttps://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
. - Klicken Sie in der Chat-App auf den Link. Musicr 2.0 wird geöffnet und der Titel wird abgespielt.
- Klicken Sie noch einmal auf den Link in Ihrer Chat-App. Sie sehen, dass keine zweite Instanz von Musicr 2.0 geöffnet wird.
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 für die Implementierung 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 unterscheidet sich die Implementierung von der Spezifikation?
Melden Sie den Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich an, geben Sie eine Anleitung zur Reproduktion an und geben Sie Blink>AppManifest
in das Feld Components ein.
Glitch eignet sich hervorragend, um schnelle Reproduktionen 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 zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig der Support für sie ist.
Senden Sie einen Tweet an @ChromiumDev mit dem Hashtag #LaunchHandler
und teilen Sie uns mit, wo und wie Sie ihn verwenden.