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
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 nieuwLaunchParams
object waarvantargetURL
is ingesteld op de start-URL, wordt in de wachtrij geplaatst in dewindow.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 gebruikenexisting-client
, terwijl desktopapparaten meerdere vensters ondersteunen ennavigate-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.
- Installeer de Musicr 2.0- app.
- Stuur uzelf een link in een chattoepassing van het formulier
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Je kunthttps://example.com/music.mp3
aanpassen voor elke URL die naar een audiobestand verwijst, bijvoorbeeldhttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Klik op de link in uw chat-app en zie hoe Musicr 2.0 wordt geopend en de track afspeelt.
- 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.