الميزات الجديدة في Chrome 116 للإضافات

يتوفر Chrome 116 الآن كإصدار تجريبي ويتضمّن العديد من التحديثات الرائعة لمطوّري إضافات Chrome. لنلقِ نظرة سريعة على الميزات الجديدة.

سيباستيان بنز
سيباستيان بنز

فتح لوحة جانبية آليًا

Side Panel (لوحة جانبية) هي إحدى الميزات الأكثر طلبًا في إضافات Chrome وتتوفّر في Chrome منذ الإصدار 114. بعد إطلاق واجهة برمجة التطبيقات Side Panel API، كانت إحدى الملاحظات الأولى التي تلقّيناها هي أنّ المطوّرين يريدون طريقة لفتح لوحة جانبية بشكل آلي. ها هو chrome.sidePanel.open الآن كإصدار تجريبي. يمكنك استخدامها لفتح اللوحة الجانبية للإضافة آليًا استجابةً لتفاعل أحد المستخدمين، مثل النقر على قائمة السياق:

chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === 'openSidePanel') {
    // This will open the panel in all the pages on the current window.
    chrome.sidePanel.open({ windowId: tab.windowId });
  }
});

دعم WebSocket في مشغّلي الخدمة

يُعدّ دعم WebSocket ضروريًا للعديد من الإضافات التي تخطط للانتقال إلى إصدار Manifest V3. يحسّن Chrome 116 دعم WebSocket لدى مشغِّلي الخدمة، إذ تؤدّي جميع أنشطة WebSocket إلى إعادة ضبط موقّت عدم النشاط لمدة 30 ثانية لعامل الخدمة. وهذا يعني أنه ما دام جهاز WebSocket نشطًا، سيظل عامل الخدمة نشطًا.

يمكنك استخدام ذلك لتنفيذ آلية التحقّق من الاتصال التي تضمن بقاء عامل الخدمة نشطًا أثناء انتظار الرسائل من الخادم، حتى إذا استغرق وصول الرسالة التالية أكثر من 30 ثانية:

function keepAlive() {
  const keepAliveIntervalId = setInterval(
    () => {
      if (webSocket) {
        webSocket.send('keepalive');
      } else {
        clearInterval(keepAliveIntervalId);
      }
    },
    // It's important to pick an interval that's shorter than 30s, to
    // avoid that the service worker becomes inactive.
    20 * 1000
  );
}

يمكنك الاطّلاع على دليل ونموذج WebSocket الجديد للحصول على مزيد من التفاصيل.

رسالة تحقق قويّة لمقدّمي الخدمات

بالحديث عن دورة حياة عامل الخدمة، تم إطلاق تحديث مهم آخر، وهو: رسالة التحقّق الفعّالة لواجهات برمجة التطبيقات التي تتطلّب تفاعل المستخدم. ستتضمّن واجهات برمجة التطبيقات التي تتطلّب تفاعل المستخدم عمليات تحقّق "قوية" للعاملين في خدمة الإضافات (أي السماح للعامل بقضاء أكثر من 5 دقائق في هذه المهمة):

تسجيل الصوت والفيديو في الخلفية

تم إغلاق فجوة أخرى بين إصدارَي Manifest V2 وManifest V3: يمكنك تسجيل الصوت والفيديو في الخلفية باستخدام tabCapture والمستندات خارج الشاشة. استخدِم واجهة برمجة التطبيقات chrome.tabCapture في مشغّل خدمات للحصول على معرّف مصدر البيانات بعد إيماءة المستخدم. ويمكن بعد ذلك تمرير ذلك إلى مستند خارج الشاشة لبدء التسجيل.

يمكنك الاطّلاع على دليل tabCapture المعدّل لمعرفة طريقة عمله، أو يمكنك الاطّلاع على نموذج "التقاط علامات التبويب - المسجّلة الذكية"، مثلاً.

واجهة برمجة التطبيقات الجديدة: runtime.getContexts()

تتيح لك runtime.getContexts() API الجديدة جلب معلومات عن السياقات النشطة المرتبطة بإضافاتك. على سبيل المثال، يمكنك استخدامها للتحقق مما إذا كان هناك مستند نشط خارج الشاشة:

const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
    (c) => c.contextType === 'OFFSCREEN_DOCUMENT'
  );

السبب الجديد خارج الشاشة: GEOLOCATION

تمت إضافة geolocation باعتباره سببًا صالحًا آخر لاستخدام مستند خارج الشاشة. يمكنك الاطّلاع على دليلنا حول استخدام الموقع الجغرافي لمعرفة المزيد من المعلومات حول كيفية الحصول على الموقع الجغرافي للإضافة باستخدام واجهة برمجة التطبيقات Offscreen API.

chrome.action.setBadgeText()

تم تحديث action.setBadgeText لمعالجة التعارض بين إصدارَي Manifest V2 وManifest V3. يؤدي تمرير سلسلة فارغة أو null إلى action.setBadgeText إلى محو نص الشارة لعلامة التبويب المحدّدة والرجوع تلقائيًا إلى نص الشارة العامة بدلاً من ذلك.

action.setBadgeText({tabId: tabId, text: ''});

ملخّص: خطوة أخرى نحو إصدار Manifest V3

من خلال توفير الدعم المحسَّن لمقدّم الخدمة على مدار الفترة منذ إنشائه وواجهة TabCapture API المحدّثة، واصلنا إحراز تقدّم نحو تحقيق هدفنا في سد فجوة الميزات بين إصدارَي Manifest V2 وV3. يُرجى مراجعة صفحة المشاكل المعروفة للاطّلاع على الحالة الحالية.