Festlegen, wie Ihre App gestartet wird
Mit der Launch Handler API können Sie steuern, 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.
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 in einem Web-App-Fenster zuletzt interagiert wurde, wird zur Ziel-URL der Auslösung weitergeleitet.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 mit der Launch-URL alstargetURL
wird in derwindow.launchQueue
des Dokuments in die Warteschlange 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
kann auch eine Liste (Array) von Werten verwendet werden. 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.
- Installiere die App Musicr 2.0.
- 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 werden keine zweite Instanz von Musicr 2.0 sehen.
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 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
Haben Sie einen Fehler in der Chromium-Implementierung 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? Ihre öffentliche Unterstützung hilft dem Chromium-Team, Funktionen zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig es ist, sie zu unterstützen.
Senden Sie einen Tweet an @ChromiumDev mit dem Hashtag #LaunchHandler
und teilen Sie uns mit, wo und wie Sie ihn verwenden.