Handler API را راه اندازی کنید

نحوه راه اندازی برنامه خود را کنترل کنید.

Launch Handler API به شما امکان می دهد نحوه راه اندازی برنامه خود را کنترل کنید، به عنوان مثال، آیا از یک پنجره موجود یا جدید استفاده می کند و اینکه آیا پنجره انتخاب شده به URL راه اندازی هدایت می شود یا خیر. همانند File Handing API، این نیز یک شی LaunchParams در صفحه راه اندازی شده window.launchQueue قرار می دهد.

وضعیت فعلی

مرحله وضعیت
1. توضیح دهنده ایجاد کنید کامل
2. پیش نویس اولیه مشخصات را ایجاد کنید کامل
3. جمع آوری بازخورد و تکرار در طراحی کامل
4. آزمایش مبدا. کامل
5. راه اندازی کنید کامل

از Launch Handler API استفاده کنید

پشتیبانی از مرورگر

پشتیبانی مرورگر

  • کروم: 110.
  • لبه: 110.
  • فایرفاکس: پشتیبانی نمی شود.
  • سافاری: پشتیبانی نمی شود.

منبع

رابط ها

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 استفاده می کند.

  1. برنامه Musicr 2.0 را نصب کنید.
  2. یک پیوند در یک برنامه چت به شکل 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 ).
  3. روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که Musicr 2.0 چگونه باز می شود و آهنگ را پخش می کند.
  4. دوباره روی پیوند در برنامه چت خود کلیک کنید و متوجه شوید که نمونه دوم 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@ ارسال کنید و به ما اطلاع دهید که کجا و چگونه از آن استفاده می‌کنید.

لینک های مفید