Mengontrol cara aplikasi Anda diluncurkan.
Launch Handler API memungkinkan Anda mengontrol cara aplikasi diluncurkan, misalnya, apakah aplikasi menggunakan
jendela yang ada atau jendela baru dan apakah jendela yang dipilih diarahkan ke URL peluncuran. Seperti File Handling API, API ini juga mengantrekan objek LaunchParams
di window.launchQueue
halaman yang diluncurkan.
Status saat ini
Langkah | Status |
---|---|
1. Membuat penjelasan | Selesai |
2. Buat draf awal spesifikasi | Selesai |
3. Mengumpulkan masukan & mengulangi desain | Selesai |
4. Uji coba origin. | Selesai |
5. Peluncuran | Selesai |
Menggunakan Launch Handler API
Dukungan browser
Antarmuka
Launch Handler API menentukan dua antarmuka baru.
LaunchParams
: Objek yang berisi targetURL
yang akan ditangani oleh konsumen.
LaunchQueue
: Mengantrekan peluncuran hingga ditangani oleh konsumen yang ditentukan.
Anggota manifes launch_handler
Untuk menentukan perilaku peluncuran aplikasi Anda secara deklaratif, tambahkan anggota manifes launch_handler
ke manifes Anda. Kolom ini memiliki satu sub-kolom bernama client_mode
. Hal ini memungkinkan Anda mengontrol apakah klien baru atau
yang sudah ada harus diluncurkan dan apakah klien ini harus dinavigasi. Contoh berikut menunjukkan file dengan nilai contoh yang akan selalu merutekan semua peluncuran ke klien baru.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Jika tidak ditentukan, launch_handler
ditetapkan secara default ke {"client_mode": "auto"}
. Nilai yang diizinkan untuk sub-kolom adalah:
client_mode
:navigate-new
: Konteks penjelajahan baru dibuat di jendela aplikasi web untuk memuat URL target peluncuran.navigate-existing
: Konteks penjelajahan yang paling baru berinteraksi di jendela aplikasi web diarahkan ke URL target peluncuran.focus-existing
: Konteks penjelajahan yang terakhir berinteraksi di jendela aplikasi web dipilih untuk menangani peluncuran. ObjekLaunchParams
baru dengantargetURL
yang ditetapkan ke URL peluncuran akan dimasukkan dalam antreanwindow.launchQueue
dokumen.auto
: Perilaku ini bergantung pada agen pengguna untuk memutuskan apa yang paling cocok untuk platform. Misalnya, perangkat seluler hanya mendukung satu klien dan akan menggunakanexisting-client
, sedangkan perangkat desktop mendukung beberapa jendela dan akan menggunakannavigate-new
untuk menghindari kehilangan data.
Properti client_mode
juga menerima daftar (array) nilai, dengan nilai valid pertama yang akan digunakan. Hal ini memungkinkan nilai baru ditambahkan ke spesifikasi tanpa merusak kompatibilitas mundur dengan implementasi yang ada.
Misalnya, jika nilai hipotetis "focus-matching-url"
ditambahkan, situs akan menentukan
"client_mode": ["focus-matching-url", "navigate-existing"]
untuk terus mengontrol
perilaku browser lama yang tidak mendukung "focus-matching-url"
.
Menggunakan window.launchQueue
Dalam kode berikut, fungsi extractSongID()
mengekstrak songID
dari URL yang diteruskan saat peluncuran. Ini digunakan untuk memutar lagu di PWA pemutar musik.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
Demo
Anda dapat melihat demo cara kerja Launch Handler API di Demo Launch Handler PWA. Pastikan untuk melihat kode sumber aplikasi untuk melihat cara aplikasi menggunakan Launch Handler API.
- Instal aplikasi Musicr 2.0.
- Kirim link formulir kepada diri Anda sendiri di aplikasi chat
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3
. (Anda dapat menyesuaikanhttps://example.com/music.mp3
untuk URL apa pun yang mengarah ke file audio, misalnya,https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav
). - Klik link di aplikasi chat Anda dan perhatikan cara Musicr 2.0 membuka dan memutar lagu.
- Klik lagi link di aplikasi chat Anda dan perhatikan bahwa Anda tidak akan mendapatkan instance kedua dari Musicr 2.0.
Masukan
Tim Chromium ingin mengetahui pengalaman Anda dengan Launch Handler API.
Beri tahu kami tentang desain API
Apakah ada sesuatu tentang API yang tidak berfungsi seperti yang Anda harapkan? Atau, apakah ada metode atau properti yang tidak ada dan perlu Anda terapkan untuk mewujudkan ide Anda? Ada pertanyaan atau komentar tentang model keamanan? Laporkan masalah spesifikasi di repo GitHub yang sesuai, atau tambahkan pendapat Anda ke masalah yang sudah ada.
Melaporkan masalah terkait penerapan
Apakah Anda menemukan bug pada penerapan Chromium? Atau apakah implementasinya berbeda dengan spesifikasi?
Laporkan bug di new.crbug.com. Pastikan untuk menyertakan detail sebanyak mungkin, petunjuk untuk mereproduksi, dan masukkan Blink>AppManifest
di kotak Komponen.
Menunjukkan dukungan untuk API
Apakah Anda berencana menggunakan Launch Handler API? Dukungan publik Anda membantu tim Chromium memprioritaskan fitur dan menunjukkan kepada vendor browser lain betapa pentingnya dukungan untuk fitur tersebut.
Kirim tweet ke @ChromiumDev menggunakan hashtag
#LaunchHandler
dan
beri tahu kami di mana dan bagaimana Anda menggunakannya.