نحوه راه اندازی برنامه خود را کنترل کنید.
Launch Handler API به شما امکان می دهد نحوه راه اندازی برنامه خود را کنترل کنید، به عنوان مثال، آیا از یک پنجره موجود یا جدید استفاده می کند و اینکه آیا پنجره انتخاب شده به URL راه اندازی هدایت می شود یا خیر. همانند File Handing API، این نیز یک شی LaunchParams در صفحه راه اندازی شده window.launchQueue قرار می دهد.
| مرحله | وضعیت |
|---|---|
| 1. توضیح دهنده ایجاد کنید | کامل |
| 2. پیش نویس اولیه مشخصات را ایجاد کنید | کامل |
| 3. جمع آوری بازخورد و تکرار در طراحی | کامل |
| 4. آزمایش مبدا. | کامل |
| 5. راه اندازی کنید | کامل |
Launch Handler API دو رابط جدید را تعریف می کند.
LaunchParams : یک شی حاوی targetURL که باید توسط مصرف کننده مدیریت شود. LaunchQueue : صف ها تا زمانی که توسط مصرف کننده مشخص شده مدیریت شوند راه اندازی می شوند.
launch_handler برای مشخص کردن رفتار راهاندازی برنامه خود، عضو مانیفست launch_handler به مانیفست خود اضافه کنید. یک زیر فیلد به نام client_mode دارد. این به شما امکان میدهد کنترل کنید که آیا یک کلاینت جدید یا موجود باید راهاندازی شود و آیا این کلاینت باید هدایت شود. مثال زیر فایلی را با مقادیر نمونه نشان می دهد که همیشه همه راه اندازی ها را به یک کلاینت جدید هدایت می کند.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
اگر مشخص نشده باشد، launch_handler پیشفرض {"client_mode": "auto"} است. مقادیر مجاز برای زیر فیلدها عبارتند از:
-
client_mode:-
navigate-new: یک زمینه مرور جدید در پنجره برنامه وب ایجاد میشود تا URL هدف راهاندازی بارگیری شود. -
navigate-existing: جدیدترین موردی که با زمینه مرور در یک پنجره برنامه وب تعامل داشته است به URL هدف راه اندازی هدایت می شود. -
focus-existing: جدیدترین موردی که با زمینه مرور در یک پنجره برنامه وب تعامل داشته است برای مدیریت راه اندازی انتخاب شده است. یک شیLaunchParamsجدید کهtargetURLآن روی URL راهاندازی تنظیم شده است درwindow.launchQueueسند قرار میگیرد.launchQueue. -
auto: این رفتار به عامل کاربر بستگی دارد که تصمیم بگیرد چه چیزی برای پلتفرم بهتر است. به عنوان مثال، دستگاههای تلفن همراه فقط از کلاینتهای منفرد پشتیبانی میکنند و ازexisting-clientاستفاده میکنند، در حالی که دستگاههای دسکتاپ از چندین پنجره پشتیبانی میکنند و ازnavigate-newبرای جلوگیری از از دست رفتن دادهها استفاده میکنند.
-
ویژگی client_mode نیز یک لیست (آرایه) از مقادیر را می پذیرد که در آن اولین مقدار معتبر استفاده می شود. این اجازه می دهد تا مقادیر جدیدی به مشخصات اضافه شود بدون اینکه سازگاری با پیاده سازی های موجود را به هم بزند.
به عنوان مثال، اگر مقدار فرضی "focus-matching-url" اضافه شود، سایت ها "client_mode": ["focus-matching-url", "navigate-existing"] تا همچنان رفتار مرورگرهای قدیمی را کنترل کنند که از "focus-matching-url" پشتیبانی نمی کنند.
در کد زیر، تابع extractSongID() یک songID از URL ارسال شده در هنگام راه اندازی استخراج می کند. این برای پخش یک آهنگ در پخش کننده موسیقی PWA استفاده می شود.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
میتوانید نسخهای از Launch Handler API را در نسخه نمایشی PWA Launch Handler مشاهده کنید. حتماً کد منبع برنامه را بررسی کنید تا ببینید چگونه از Launch Handler API استفاده می کند.
- برنامه Musicr 2.0 را نصب کنید.
- یک پیوند در یک برنامه چت به شکل
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3برای خود بفرستید. (شما می توانیدhttps://example.com/music.mp3برای هر URL که به یک فایل صوتی اشاره می کند، سفارشی کنید، به عنوان مثال،https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav). - روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که Musicr 2.0 چگونه باز می شود و آهنگ را پخش می کند.
- دوباره روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که نمونه دوم Musicr 2.0 را دریافت نخواهید کرد.
تیم Chromium میخواهد درباره تجربیات شما با Launch Handler API بشنود.
آیا چیزی در مورد API وجود دارد که آنطور که انتظار داشتید کار نمی کند؟ یا آیا روش ها یا ویژگی هایی وجود دارد که برای اجرای ایده خود به آنها نیاز دارید؟ سوال یا نظری در مورد مدل امنیتی دارید؟ یک مشکل مشخصات را در مخزن GitHub مربوطه ثبت کنید یا افکار خود را به یک مشکل موجود اضافه کنید.
آیا با اجرای Chromium اشکالی پیدا کردید؟ یا اجرا با مشخصات متفاوت است؟ یک اشکال را در new.crbug.com ثبت کنید. اطمینان حاصل کنید که تا جایی که می توانید جزئیات، دستورالعمل های بازتولید را وارد کرده و Blink>AppManifest را در کادر Components وارد کنید.
آیا قصد دارید از Launch Handler API استفاده کنید؟ پشتیبانی عمومی شما به تیم Chromium کمک میکند ویژگیها را اولویتبندی کند و به سایر فروشندگان مرورگر نشان میدهد که چقدر حمایت از آنها ضروری است.
با استفاده از هشتگ #LaunchHandler یک توییت به ChromiumDev@ ارسال کنید و به ما اطلاع دهید که کجا و چگونه از آن استفاده میکنید.