এক্সটেনশনের জন্য Chrome 116-এ নতুন কী রয়েছে৷

Chrome 116 এখন বিটাতে উপলব্ধ এবং এতে Chrome এক্সটেনশন বিকাশকারীদের জন্য অনেক উত্তেজনাপূর্ণ আপডেট রয়েছে৷ চলুন নতুন কি তা দ্রুত কটাক্ষপাত করা যাক.

সেবাস্তিয়ান বেঞ্জ
সেবাস্তিয়ান বেঞ্জ

প্রোগ্রামগতভাবে একটি সাইডপ্যানেল খুলুন

সাইডপ্যানেল ক্রোম এক্সটেনশনগুলির মধ্যে সর্বাধিক অনুরোধ করা বৈশিষ্ট্যগুলির মধ্যে একটি এবং এটি 114 সংস্করণ থেকে ক্রোমে উপলব্ধ। সাইড প্যানেল 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 সমর্থন

ম্যানিফেস্ট V3-এ যাওয়ার পরিকল্পনা করা অনেক এক্সটেনশনের জন্য WebSocket সমর্থন গুরুত্বপূর্ণ। Chrome 116 পরিষেবা কর্মীদের মধ্যে WebSocket সমর্থন আরও উন্নত করে কারণ সমস্ত WebSocket কার্যকলাপ 30s পরিষেবা কর্মী নিষ্ক্রিয় টাইমার পুনরায় সেট করবে৷ এর মানে হল যতক্ষণ আপনার 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 গাইড এবং নমুনা দেখুন।

পরিষেবা কর্মীদের জন্য শক্তিশালী রক্ষা

সার্ভিস ওয়ার্কার লাইফসাইকেলের কথা বলতে গেলে, আরেকটি গুরুত্বপূর্ণ আপডেট এসেছে: API-এর জন্য শক্তিশালী রক্ষণাবেক্ষণ যা ব্যবহারকারীর মিথস্ক্রিয়া প্রয়োজন। যে APIগুলিতে ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রয়োজন হয় তাদের এক্সটেনশন পরিষেবা কর্মীদের জন্য "শক্তিশালী" রক্ষাকবচ থাকবে (অর্থাৎ, কর্মীকে এই কাজটিতে 5 মিনিটের বেশি সময় নিতে দেয়):

পটভূমিতে অডিও এবং ভিডিও রেকর্ডিং

ম্যানিফেস্ট V2 এবং ম্যানিফেস্ট V3 এর মধ্যে আরেকটি ব্যবধান বন্ধ করা হয়েছে: আপনি tabCapture এবং অফস্ক্রিন নথি ব্যবহার করে পটভূমিতে অডিও এবং ভিডিও রেকর্ড করতে পারেন। ব্যবহারকারীর অঙ্গভঙ্গি অনুসরণ করে একটি স্ট্রিম আইডি পেতে একটি পরিষেবা কর্মীতে chrome.tabCapture API ব্যবহার করুন৷ তারপর রেকর্ডিং শুরু করার জন্য এটি একটি অফস্ক্রিন নথিতে প্রেরণ করা যেতে পারে।

এটি কীভাবে কাজ করে তা জানতে আমাদের আপডেট করা tabCapture গাইডটি দেখুন বা, একটি কার্যকরী উদাহরণের জন্য, ট্যাব ক্যাপচার - রেকর্ডার নমুনা দেখুন।

নতুন API: runtime.getContexts()

নতুন runtime.getContexts() API আপনাকে আপনার এক্সটেনশনের সাথে যুক্ত সক্রিয় প্রসঙ্গ সম্পর্কে তথ্য আনতে দেয়। উদাহরণস্বরূপ, আপনি একটি সক্রিয় অফস্ক্রিন নথি আছে কিনা তা পরীক্ষা করতে এটি ব্যবহার করতে পারেন:

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

নতুন অফস্ক্রিন কারণ: GEOLOCATION৷

একটি অফস্ক্রিন নথি ব্যবহার করার আরেকটি বৈধ কারণ হিসেবে geolocation যোগ করা হয়েছে। অফস্ক্রিন API ব্যবহার করে এক্সটেনশনের ভৌগলিক অবস্থান কীভাবে পেতে হয় সে সম্পর্কে আরও জানতে ভৌগলিক অবস্থান ব্যবহার করে আমাদের গাইডটি দেখুন।

chrome.action.setBadgeText()

action.setBadgeText আপডেট করা হয়েছে ম্যানিফেস্ট V2 এবং ম্যানিফেস্ট V3-এর মধ্যে একটি অসঙ্গতি দূর করার জন্য। একটি খালি স্ট্রিং বা null টো অ্যাকশনে পাস action.setBadgeText নির্দিষ্ট ট্যাবের জন্য ব্যাজ টেক্সট সাফ করবে এবং পরিবর্তে গ্লোবাল ব্যাজ টেক্সটে ডিফল্ট হবে।

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

সারাংশ: ম্যানিফেস্ট V3 এর দিকে আরেকটি ধাপ

উন্নত পরিষেবা কর্মী লাইফটাইম সাপোর্ট এবং আপডেট করা ট্যাবক্যাপচার এপিআই সহ আমরা ম্যানিফেস্ট V2 এবং V3 এর মধ্যে বৈশিষ্ট্যের ব্যবধান বন্ধ করার লক্ষ্যে অগ্রগতি অব্যাহত রেখেছি। বর্তমান অবস্থার জন্য আমাদের পরিচিত সমস্যা পৃষ্ঠা চেকআউট করুন.