التحكّم في طريقة تشغيل تطبيقك
تتيح لك واجهة برمجة التطبيقات Launch Handler API التحكّم في طريقة تشغيل تطبيقك، مثلاً، ما إذا كان سيستخدم نافذة حالية أو نافذة جديدة وما إذا كان سيتم الانتقال إلى عنوان URL للتشغيل في النافذة المحدّدة. كما هو الحال مع File Handling API، يؤدي ذلك أيضًا إلى وضع عنصر LaunchParams
في قائمة الانتظار في window.launchQueue
للصفحة التي تم إطلاقها.
الوضع الحالي
الخطوة | الحالة |
---|---|
1. إنشاء شرح | مكتمل |
2. إنشاء مسودة أولية للمواصفات | مكتمل |
3- جمع الملاحظات وتكرار التصميم | مكتمل |
4. مرحلة التجربة والتقييم | مكتمل |
5- إطلاق | مكتمل |
استخدام Launch Handler API
دعم المتصفح
واجهات
تحدّد واجهة برمجة التطبيقات Launch Handler واجهتَين جديدتَين.
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
للمستند.-
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 الذي تم تمريره عند التشغيل. يُستخدَم هذا الإذن لتشغيل أغنية في تطبيق ويب تقدّمي لمشغّل موسيقى.
if ('launchQueue' in window) { launchQueue.setConsumer((launchParams) => { if (launchParams.targetURL) { const songID = extractSongId(launchParams.targetURL); if (songID) { playSong(songID); } } }); }
عرض توضيحي
يمكنك الاطّلاع على عرض توضيحي لواجهة برمجة التطبيقات Launch Handler أثناء عملها في العرض التوضيحي لواجهة برمجة التطبيقات 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.
أخبِرنا عن تصميم واجهة برمجة التطبيقات
هل هناك أي شيء في واجهة برمجة التطبيقات لا يعمل على النحو المتوقّع؟ أو هل هناك طرق أو سمات مفقودة تحتاج إليها لتنفيذ فكرتك؟ هل لديك سؤال أو تعليق بشأن نموذج الأمان؟ يمكنك الإبلاغ عن مشكلة في المواصفات في مستودع GitHub ذي الصلة، أو إضافة أفكارك إلى مشكلة حالية.
الإبلاغ عن مشكلة في عملية التنفيذ
هل عثرت على خطأ في تنفيذ Chromium؟ أو هل يختلف التنفيذ عن المواصفات؟ يمكنك الإبلاغ عن خطأ على new.crbug.com. احرص على تضمين أكبر قدر ممكن من التفاصيل وتعليمات إعادة إنتاج الخطأ، وأدخِل Blink>AppManifest
في مربّع المكوّنات.
إظهار الدعم لواجهة برمجة التطبيقات
هل تخطّط لاستخدام Launch Handler API؟ يساعد دعمك العلني فريق Chromium في تحديد أولويات الميزات، ويوضّح لمورّدي المتصفّحات الآخرين مدى أهمية توفيرها.
يمكنك إرسال تغريدة إلى @ChromiumDev باستخدام الهاشتاغ #LaunchHandler
وإخبارنا بمكان استخدامك لهذه الميزة وكيفية استخدامها.