browser.alarms

বিবরণ

নিয়মিতভাবে বা ভবিষ্যতে নির্দিষ্ট সময়ে কোড রান করার শিডিউল করতে chrome.alarms API ব্যবহার করুন।

অনুমতি

alarms

browser.alarms API ব্যবহার করতে, ম্যানিফেস্টে "alarms" অনুমতি ঘোষণা করুন:

{
  "name": "My extension",
  ...
  "permissions": [
    "alarms"
  ],
  ...
}

ধারণা ও ব্যবহার

নির্ভরযোগ্য আচরণ নিশ্চিত করতে, API কীভাবে আচরণ করে তা বোঝা সহায়ক।

ডিভাইস স্লিপ মোডে আছে

ডিভাইস স্লিপ মোডে থাকলেও অ্যালার্ম চলতে থাকে। তবে, অ্যালার্মের কারণে ডিভাইস স্লিপ মোড থেকে চালু হবে না। ডিভাইস চালু হলে, মিস করা যেকোনও অ্যালার্ম বেজে উঠবে। রিপিট করা অ্যালার্ম সর্বাধিক একবার বাজবে এবং তারপরে ডিভাইস চালু হওয়ার সময় থেকে শুরু করে নির্দিষ্ট সময়সীমা ব্যবহার করে আবার শিডিউল করা হবে, অ্যালার্মটি মূলত চালানোর জন্য সেট করার পর থেকে ইতিমধ্যে অতিবাহিত হওয়া কোনও সময় বিবেচনা করা হবে না।

পারসিস্টেন্স

আপনি persistAcrossSessions ফ্ল্যাগ ব্যবহার করে অ্যালার্ম তৈরি করার সময় অ্যালার্মের স্থায়িত্ব নিয়ন্ত্রণ করতে পারবেন। এটি true (এক্সটেনশন আপডেট না হওয়া পর্যন্ত থাকে) বা false (এক্সটেনশন রিলোড বা ব্রাউজার রিস্টার্ট হলে এবং এক্সটেনশন আপডেট হলে মুছে যায়) হিসেবে সেট করা যেতে পারে।

অন্যান্য ব্রাউজার এবং Chrome-এর আগের ভার্সন

এই প্রপার্টি অন্যান্য ব্রাউজারে (সমস্যা) বা Chrome 150-এর আগের Chrome ভার্সনে কাজ করে না, যেখানে আচরণ অপ্রত্যাশিত হতে পারে। তাই, আপনার সার্ভিস ওয়ার্কার চালু হওয়ার সময় গুরুত্বপূর্ণ অ্যালার্ম আছে কিনা তা দেখে নেওয়া সবচেয়ে ভালো। যেমন:

async function checkAlarmState() {
  const alarm = await browser.alarms.get("my-alarm");

  if (!alarm) {
    await browser.alarms.create("my-alarm", { periodInMinutes: 1 });
  }
}

checkAlarmState();

ব্যবহারকারীর অ্যাকশনের উপর ভিত্তি করে আপনার অ্যালার্ম ডায়নামিকভাবে তৈরি করা হলে, আপনি হয়ত অন্য কোথাও অ্যালার্ম তৈরি হওয়ার তথ্য স্টোর করতে চাইবেন যাতে প্রয়োজন হলে আপনি সেটি আবার তৈরি করতে পারেন।

উদাহরণ

অ্যালার্ম কীভাবে ব্যবহার করতে হয় এবং তার উত্তর দিতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন। এই API ব্যবহার করে দেখতে, chrome-extension-samples রিপোজিটরি থেকে Alarm API উদাহরণ ইনস্টল করুন।

একটি অ্যালার্ম সেট করুন

এক্সটেনশনের নতুন ভার্সন ইনস্টল করা হলে, নিম্নলিখিত উদাহরণটি সার্ভিস ওয়ার্কারে অ্যালার্ম সেট করে:

service-worker.js:

browser.runtime.onInstalled.addListener(async ({ reason }) => {
  // Create an alarm so we have something to look at in the demo
  await browser.alarms.create('demo-default-alarm', {
    delayInMinutes: 1,
    periodInMinutes: 1,
    persistAcrossSessions: true
  });
});

অ্যালার্মের উত্তর দিন

নিচের উদাহরণে, যে অ্যালার্ম বন্ধ হয়ে গেছে তার নামের উপর ভিত্তি করে অ্যাকশন টুলবার আইকন সেট করা হয়।

service-worker.js:

browser.alarms.onAlarm.addListener((alarm) => {
  browser.action.setIcon({
    path: getIconPath(alarm.name),
  });
});

ধরন

Alarm

প্রপার্টি

  • নাম

    স্ট্রিং

    এই অ্যালার্মের নাম।

  • periodInMinutes

    নম্বর ঐচ্ছিক

    নাল না হলে, অ্যালার্মটি রিপিট হবে এবং periodInMinutes মিনিট পরে আবার বাজবে।

  • persistAcrossSessions

    বুলিয়ান

    Chrome 150+

    সেশন (ব্রাউজার রিস্টার্ট) জুড়ে অ্যালার্মটি বজায় থাকবে কিনা।

  • scheduledTime

    নম্বর

    এই অ্যালার্মটি যে সময়ে বাজার জন্য শিডিউল করা হয়েছিল, তা যুগ শুরুর পর থেকে মিলিসেকেন্ডে (যেমন Date.now() + n)। পারফর্ম্যান্সের কারণে, অ্যালার্মটি এর বাইরে একটি ইচ্ছামত পরিমাণে বিলম্বিত হতে পারে।

AlarmCreateInfo

প্রপার্টি

  • delayInMinutes

    নম্বর ঐচ্ছিক

    মিনিটে সময়ের দৈর্ঘ্য যার পরে onAlarm ইভেন্ট ফায়ার করা উচিত।

  • নাম

    স্ট্রিং ঐচ্ছিক

    Chrome 152+

    এই অ্যালার্মের নাম।

  • periodInMinutes

    নম্বর ঐচ্ছিক

    সেট করা থাকলে, when বা delayInMinutes দ্বারা নির্দিষ্ট করা প্রাথমিক ইভেন্টের পরে প্রতি periodInMinutes মিনিট অন্তর onAlarm ইভেন্ট ফায়ার করা উচিত। সেট করা না থাকলে, অ্যালার্মটি একবারই বাজবে।

  • persistAcrossSessions

    বুলিয়ান ঐচ্ছিক

    Chrome 150+

    সেশন (ব্রাউজার রিস্টার্ট) জুড়ে অ্যালার্মটি বজায় থাকবে কিনা। Chrome-এ, এটি ডিফল্ট হিসেবে true-তে সেট করা থাকে যাতে পুরনো আচরণের সাথে ম্যাচ করে, তবে ব্রাউজার জুড়ে মানানসই করার সুবিধা সর্বাধিক করতে আপনাকে এটি স্পষ্টভাবে সেট করতে হবে।

  • কখন

    নম্বর ঐচ্ছিক

    যে সময়ে অ্যালার্ম বাজবে, সেটি ইপকের পরে মিলিসেকেন্ডে (যেমন, Date.now() + n)।

পদ্ধতি

clear()

browser.alarms.clear(
  name?: string,
)
: Promise<boolean>

প্রদত্ত নামের অ্যালার্ম মুছে দেয়।

প্যারামিটারগুলি

  • নাম

    স্ট্রিং ঐচ্ছিক

    যে অ্যালার্মটি মুছে ফেলতে চান সেটির নাম। ডিফল্ট হিসেবে ফাঁকা স্ট্রিং থাকে।

রিটার্ন

  • Promise<boolean>

    Chrome 91+ Chrome 148 থেকে browser.*

clearAll()

browser.alarms.clearAll(): Promise<boolean | undefined>

সব অ্যালার্ম মুছে দেয়।

রিটার্ন

  • Promise<boolean | undefined>

    Chrome 91+ Chrome 148 থেকে browser.*

create()

browser.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
)
: Promise<void>

অ্যালার্ম তৈরি করে। alarmInfo-এর উল্লেখ করা সময়ের কাছাকাছি, onAlarm ইভেন্টটি ফায়ার করা হয়। একই নামের অন্য কোনও অ্যালার্ম থাকলে (অথবা কোনও নাম উল্লেখ না করা থাকলে), সেটি বাতিল করে এই অ্যালার্মটি সেট করা হবে।

ব্যবহারকারীর মেশিনের উপর লোড কমাতে, Chrome প্রতি সেকেন্ডে সর্বাধিক একবার অ্যালার্ম সীমিত করে, তবে সেগুলি আরও বেশি পরিমাণে বিলম্বিত হতে পারে। অর্থাৎ, delayInMinutes বা periodInMinutes ১ সেকেন্ডের কম সেট করলে তা গ্রাহ্য হবে না এবং একটি সতর্কতা দেখানো হবে। when "এখন" থেকে ১ সেকেন্ডের কম সময়ের জন্য সেট করা যেতে পারে, তবে অ্যালার্মটি অন্তত ১ সেকেন্ডের জন্য বাজবে না।

প্যারামিটারগুলি

  • নাম

    স্ট্রিং ঐচ্ছিক

    এই অ্যালার্ম শনাক্ত করার জন্য ঐচ্ছিক নাম। ডিফল্ট হিসেবে ফাঁকা স্ট্রিং থাকে।

  • alarmInfo

    অ্যালার্ম কখন ট্রিগার হবে তা বর্ণনা করে। শুরুর সময় অবশ্যই when বা delayInMinutes (তবে দুটিই নয়) দ্বারা নির্দিষ্ট করতে হবে। periodInMinutes সেট করা থাকলে, প্রাথমিক ইভেন্টের পরে প্রতি periodInMinutes মিনিট অন্তর অ্যালার্ম রিপিট হবে। রিপিট হওয়া অ্যালার্মের জন্য when বা delayInMinutes-এর কোনওটিই সেট করা না থাকলে, delayInMinutes-এর জন্য ডিফল্ট হিসেবে periodInMinutes ব্যবহার করা হয়।

রিটার্ন

  • <void> প্রমিস

    Chrome 111+ Chrome 148 থেকে browser.*

    অ্যালার্ম তৈরি হয়ে গেলে প্রমিস রিজলভ হয়ে যায়।

get()

browser.alarms.get(
  name?: string,
)
: Promise<Alarm | undefined>

নির্দিষ্ট অ্যালার্ম সম্পর্কে বিবরণ ফিরিয়ে আনে।

প্যারামিটারগুলি

  • নাম

    স্ট্রিং ঐচ্ছিক

    যে অ্যালার্ম পেতে চান সেটির নাম। ডিফল্ট হিসেবে ফাঁকা স্ট্রিং থাকে।

রিটার্ন

  • Promise<Alarm | undefined>

    Chrome 91+ Chrome 148 থেকে browser.*

getAll()

browser.alarms.getAll(): Promise<Alarm[]>

সব অ্যালার্মের একটি অ্যারে পায়।

রিটার্ন

ইভেন্ট

onAlarm

browser.alarms.onAlarm.addListener(
  callback: function,
)

অ্যালার্মের সময় পেরিয়ে গেলে ফায়ার করা হয়। ইভেন্ট পৃষ্ঠার জন্য উপযোগী।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (alarm: Alarm) => void