نحوه راه اندازی برنامه خود را کنترل کنید.
Launch Handler API به شما امکان می دهد نحوه راه اندازی برنامه خود را کنترل کنید، به عنوان مثال، آیا از یک پنجره موجود یا جدید استفاده می کند و اینکه آیا پنجره انتخاب شده به URL راه اندازی هدایت می شود یا خیر. همانند File Handing API، این نیز یک شی LaunchParams
در صفحه راه اندازی شده window.launchQueue
قرار می دهد.
وضعیت فعلی
مرحله | وضعیت |
---|---|
1. توضیح دهنده ایجاد کنید | کامل شود |
2. پیش نویس اولیه مشخصات را ایجاد کنید | کامل شود |
3. جمع آوری بازخورد و تکرار در طراحی | کامل شود |
4. آزمایش مبدا. | کامل شود |
5. راه اندازی کنید | کامل شود |
با استفاده از Launch Handler API
پشتیبانی از مرورگر
Launch Handler فقط در ChromeOS در دسترس است.
رابط ها
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"
پشتیبانی نمی کند.
با استفاده از window.launchQueue
در کد زیر، تابع 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 را روی دستگاه ChromeOS نصب کنید.
- یک پیوند در یک برنامه چت به شکل
https://launch-handler.glitch.me?track=https://example.com/music.mp3
برای خود بفرستید. (شما می توانیدhttps://example.com/music.mp3
برای هر URL که به یک فایل صوتی اشاره می کند، برای مثالhttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
سفارشی کنیدhttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که Musicr 2.0 چگونه باز می شود و آهنگ را پخش می کند.
- دوباره روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که نمونه دوم Musicr 2.0 را دریافت نخواهید کرد.
بازخورد
تیم Chromium میخواهد درباره تجربیات شما با Launch Handler API بشنود.
در مورد طراحی API به ما بگویید
آیا چیزی در مورد API وجود دارد که آنطور که انتظار داشتید کار نمی کند؟ یا آیا روش ها یا ویژگی هایی وجود دارد که برای اجرای ایده خود به آنها نیاز دارید؟ سوال یا نظری در مورد مدل امنیتی دارید؟ یک مشکل مشخصات را در مخزن GitHub مربوطه ثبت کنید یا افکار خود را به یک مشکل موجود اضافه کنید.
گزارش مشکل در اجرا
آیا با اجرای Chromium اشکالی پیدا کردید؟ یا اجرا ب�� مشخصات متفاوت است؟ یک اشکال را در new.crbug.com ثبت کنید. اطمینان حاصل کنید که تا آنجا که می توانید جزئیات، دستورالعمل های ساده برای بازتولید را وارد کنید و Blink>AppManifest
در کادر Components وارد کنید. Glitch برای به اشتراک گذاری سریع و آسان تکرارها عالی عمل می کند.
پشتیبانی از API را نشان دهید
آیا قصد دارید از Launch Handler API استفاده کنید؟ پشتیبانی عمومی شما به تیم Chromium کمک میکند ویژگیها را اولویتبندی کند و به سایر فروشندگان مرورگر نشان میدهد که چقدر حمایت از آنها ضروری است.
با استفاده از هشتگ #LaunchHandler
یک توییت به ChromiumDev@ ارسال کنید و به ما اطلاع دهید که کجا و چگونه از آن استفاده میکنید.