Handler API starten

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

Unterstützte Browser

  • Chrome: 110.
  • Edge: 110.
  • Firefox: Nicht unterstützt.
  • Safari: Nicht unterstützt.

Quelle

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 neues LaunchParams-Objekt mit der Launch-URL als targetURL wird in der window.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ürden existing-client verwenden, während Desktop-Geräte mehrere Fenster unterstützen und navigate-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.

  1. Installiere die App Musicr 2.0.
  2. Senden Sie sich selbst einen Link in einer Chat-Anwendung im Format https://launch-handler.glitch.me?track=https://example.com/music.mp3. Du kannst https://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.
  3. Klicken Sie in der Chat-App auf den Link. Musicr 2.0 wird geöffnet und der Titel wird abgespielt.
  4. 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.

Nützliche Links