Start de Handler-API

Bepaal hoe uw app wordt gelanceerd.

Met de Launch Handler API kunt u bepalen hoe uw app wordt gestart, bijvoorbeeld of deze een bestaand of een nieuw venster gebruikt en of het gekozen venster naar de start-URL wordt genavigeerd. Net als bij de File Handing API wordt hiermee ook een LaunchParams object in de window.launchQueue van de geopende pagina geplaatst.

Huidige status

Stap Status
1. Maak een uitleg Compleet
2. Maak een eerste ontwerp van specificatie Compleet
3. Verzamel feedback en herhaal het ontwerp Compleet
4. Oorsprongsproces. Compleet
5. Lancering Compleet

Gebruik de Launch Handler-API

Browser-ondersteuning

Browserondersteuning

  • Chroom: 110.
  • Rand: 110.
  • Firefox: niet ondersteund.
  • Safari: niet ondersteund.

Bron

Interfaces

De Launch Handler API definieert twee nieuwe interfaces.

LaunchParams : een object dat de targetURL bevat die door de consument moet worden afgehandeld. LaunchQueue : wachtrijen worden gestart totdat ze worden afgehandeld door de opgegeven consument.

Het manifestlid launch_handler

Als u het startgedrag van uw app declaratief wilt opgeven, voegt u het manifestlid launch_handler toe aan uw manifest. Het heeft één subveld genaamd client_mode . Hiermee kunt u bepalen of een nieuwe of een bestaande client moet worden gestart en of door deze client moet worden genavigeerd. In het volgende voorbeeld ziet u een bestand met voorbeeldwaarden die alle lanceringen altijd naar een nieuwe client routeren.

{
  "launch_handler": {
    "client_mode": "navigate-new"
  }
}

Indien niet gespecificeerd, wordt launch_handler standaard ingesteld op {"client_mode": "auto"} . De toegestane waarden voor de subvelden zijn:

  • client_mode :
    • navigate-new : er wordt een nieuwe browsecontext gemaakt in een webapp-venster om de doel-URL van de lancering te laden.
    • navigate-existing : de meest recente interactie met de browsercontext in een web-app-venster wordt naar de doel-URL van de lancering genavigeerd.
    • focus-existing : de meest recente interactie met de browsercontext in een webapp-venster wordt gekozen om de lancering af te handelen. Een nieuw LaunchParams object waarvan targetURL is ingesteld op de start-URL, wordt in de wachtrij geplaatst in de window.launchQueue van het document.
    • auto : Het gedrag is aan de user-agent om te beslissen wat het beste werkt voor het platform. Mobiele apparaten ondersteunen bijvoorbeeld alleen afzonderlijke clients en gebruiken existing-client , terwijl desktopapparaten meerdere vensters ondersteunen en navigate-new gebruiken om gegevensverlies te voorkomen.

De eigenschap client_mode accepteert ook een lijst (array) met waarden, waarbij de eerste geldige waarde wordt gebruikt. Dit is om het mogelijk te maken dat nieuwe waarden aan de specificatie worden toegevoegd zonder de achterwaartse compatibiliteit met bestaande implementaties te verbreken.

Als de hypothetische waarde "focus-matching-url" bijvoorbeeld zou worden toegevoegd, zouden sites "client_mode": ["focus-matching-url", "navigate-existing"] om het gedrag van oudere browsers die dat wel deden te blijven controleren ondersteunt "focus-matching-url" niet.

Gebruik window.launchQueue

In de volgende code extraheert de functie extractSongID() een songID uit de URL die bij het starten wordt doorgegeven. Dit wordt gebruikt om een ​​nummer af te spelen in een muziekspeler PWA.

if ('launchQueue' in window) {
  launchQueue.setConsumer((launchParams) => {
    if (launchParams.targetURL) {
      const songID = extractSongId(launchParams.targetURL);
      if (songID) {
        playSong(songID);
      }
    }
  });
}

Demo

U kunt een demo van de Launch Handler API in actie zien in de PWA Launch Handler Demo . Zorg ervoor dat u de broncode van de applicatie bekijkt om te zien hoe deze de Launch Handler API gebruikt.

  1. Installeer de Musicr 2.0- app.
  2. Stuur uzelf een link in een chattoepassing van het formulier https://launch-handler.glitch.me?track=https://example.com/music.mp3 . (Je kunt https://example.com/music.mp3 aanpassen voor elke URL die naar een audiobestand verwijst, bijvoorbeeld https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190 ).
  3. Klik op de link in uw chat-app en zie hoe Musicr 2.0 wordt geopend en de track afspeelt.
  4. Klik nogmaals op de link in uw chat-app en merk op dat u geen tweede exemplaar van Musicr 2.0 ontvangt.

Feedback

Het Chromium-team wil graag horen wat uw ervaringen zijn met de Launch Handler API.

Vertel ons over het API-ontwerp

Is er iets aan de API dat niet werkt zoals je had verwacht? Of ontbreken er methoden of eigenschappen die je nodig hebt om je idee te implementeren? Heeft u een vraag of opmerking over het beveiligingsmodel? Dien een spec issue in op de corresponderende GitHub repository , of voeg uw gedachten toe aan een bestaand issue.

Meld een probleem met de implementatie

Heeft u een bug gevonden in de implementatie van Chromium? Of wijkt de uitvoering af van de specificaties? Dien een bug in op new.crbug.com . Zorg ervoor dat u zoveel mogelijk details en instructies voor het reproduceren opneemt en typ Blink>AppManifest in het vak Componenten . Glitch werkt uitstekend voor het delen van snelle herhalingen.

Toon ondersteuning voor de API

Bent u van plan de Launch Handler API te gebruiken? Jouw publieke steun helpt het Chromium-team bij het prioriteren van functies en laat andere browserleveranciers zien hoe belangrijk het is om deze te ondersteunen.

Stuur een tweet naar @ChromiumDev met de hashtag #LaunchHandler en laat ons weten waar en hoe je deze gebruikt.

Handige links