বর্ণনা
পর্যায়ক্রমে অথবা ভবিষ্যতে একটি নির্দিষ্ট সময়ে কোড চালানোর জন্য সময়সূচী নির্ধারণ করতে chrome.alarms API ব্যবহার করুন।
অনুমতি
alarms chrome.alarms API ব্যবহার করতে, ম্যানিফেস্টে "alarms" পারমিশনটি ঘোষণা করুন:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
ধারণা এবং ব্যবহার
নির্ভরযোগ্য আচরণ নিশ্চিত করার জন্য, এপিআই কীভাবে কাজ করে তা বোঝা সহায়ক।
ডিভাইস স্লিপ
ডিভাইস স্লিপিং মোডে থাকলেও অ্যালার্ম চলতে থাকে। তবে, কোনো অ্যালার্ম ডিভাইসটিকে জাগিয়ে তুলবে না। ডিভাইসটি জেগে উঠলে, বাদ পড়া অ্যালার্মগুলো বেজে উঠবে। পুনরাবৃত্তিমূলক অ্যালার্মগুলো সর্বোচ্চ একবার বাজবে এবং এরপর ডিভাইসটি জেগে ওঠার সময় থেকে শুরু করে নির্দিষ্ট সময়কাল অনুযায়ী সেগুলোর সময়সূচী পুনরায় নির্ধারণ করা হবে। এক্ষেত্রে, অ্যালার্মটি প্রথমবার বাজার পর থেকে ইতোমধ্যে অতিবাহিত হওয়া কোনো সময় গণনা করা হবে না।
অধ্যবসায়
আপনি persistAcrossSessions ফ্ল্যাগ ব্যবহার করে অ্যালার্ম তৈরির সময় এর স্থায়িত্ব নিয়ন্ত্রণ করতে পারেন। এটিকে true (এক্সটেনশন আপডেট না হওয়া পর্যন্ত স্থায়ী) অথবা false (এক্সটেনশন রিলোড বা ব্রাউজার রিস্টার্ট হলে এবং যখনই এক্সটেনশন আপডেট হয় তখন মুছে যায়) সেট করা যেতে পারে।
অন্যান্য ব্রাউজার এবং ক্রোমের পূর্ববর্তী সংস্করণ
এই প্রপার্টিটি অন্যান্য ব্রাউজারে ( সমস্যা ) অথবা ক্রোম ১৫০-এর পূর্ববর্তী সংস্করণগুলিতে সমর্থিত নয়, যেখানে এর আচরণ অপ্রত্যাশিত হতে পারে। ফলস্বরূপ, আপনার সার্ভিস ওয়ার্কার প্রতিবার চালু হওয়ার সময় গুরুত্বপূর্ণ অ্যালার্মগুলো যেন থাকে, তা নিশ্চিত করাই শ্রেয়। উদাহরণস্বরূপ:
async function checkAlarmState() {
const alarm = await chrome.alarms.get("my-alarm");
if (!alarm) {
await chrome.alarms.create("my-alarm", { periodInMinutes: 1 });
}
}
checkAlarmState();
যদি আপনার অ্যালার্মটি ব্যবহারকারীর কার্যকলাপের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তৈরি হয়, তাহলে অ্যালার্মটি তৈরি হওয়ার তথ্য আপনি অন্য কোথাও সংরক্ষণ করতে চাইতে পারেন, যাতে প্রয়োজনে আপনি এটি পুনরায় তৈরি করতে পারেন।
উদাহরণ
নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে একটি অ্যালার্ম ব্যবহার করতে হয় এবং তাতে সাড়া দিতে হয়। এই API-টি ব্যবহার করে দেখতে, chrome-extension-samples রিপোজিটরি থেকে Alarm API উদাহরণটি ইনস্টল করুন।
অ্যালার্ম সেট করুন
নিম্নলিখিত উদাহরণটি এক্সটেনশনের একটি নতুন সংস্করণ ইনস্টল করা হলে সার্ভিস ওয়ার্কারে একটি অ্যালার্ম সেট করে:
service-worker.js:
chrome.runtime.onInstalled.addListener(async ({ reason }) => {
// Create an alarm so we have something to look at in the demo
await chrome.alarms.create('demo-default-alarm', {
delayInMinutes: 1,
periodInMinutes: 1,
persistAcrossSessions: true
});
});
অ্যালার্মে সাড়া দিন
নিম্নলিখিত উদাহরণটি বেজে ওঠা অ্যালার্মের নামের উপর ভিত্তি করে অ্যাকশন টুলবার আইকন সেট করে।
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
প্রকারভেদ
Alarm
বৈশিষ্ট্য
- নাম
স্ট্রিং
এই অ্যালার্মটির নাম।
- সময়কাল মিনিটে
সংখ্যা ঐচ্ছিক
নাল না হলে, অ্যালার্মটি একটি পুনরাবৃত্তিমূলক অ্যালার্ম এবং
periodInMinutesমিনিট পর আবার বাজবে। - সেশন জুড়ে টিকে থাকে
বুলিয়ান
বিচারাধীনসেশন জুড়ে (ব্রাউজার পুনরায় চালু করার পরেও) অ্যালার্মটি চালু থাকবে কিনা।
- নির্ধারিত সময়
সংখ্যা
যে সময়ে এই অ্যালার্মটি বেজে ওঠার কথা ছিল, তা ইপকের পর মিলিসেকেন্ডে (যেমন
Date.now() + n)। পারফরম্যান্সগত কারণে, অ্যালার্মটি এর চেয়ে ইচ্ছামত পরিমাণে বিলম্বিত হতে পারে।
AlarmCreateInfo
বৈশিষ্ট্য
- বিলম্ব (মিনিটে)
সংখ্যা ঐচ্ছিক
মিনিটের হিসাবে সময়কাল, যার পরে
onAlarmইভেন্টটি সক্রিয় হবে। - সময়কাল মিনিটে
সংখ্যা ঐচ্ছিক
যদি সেট করা থাকে, তাহলে
whenবাdelayInMinutesদ্বারা নির্দিষ্ট প্রাথমিক ইভেন্টের পর প্রতিperiodInMinutesমিনিট অন্তর onAlarm ইভেন্টটি ফায়ার হবে। যদি সেট করা না থাকে, তাহলে অ্যালার্মটি কেবল একবারই ফায়ার হবে। - সেশন জুড়ে টিকে থাকে
বুলিয়ান ঐচ্ছিক
বিচারাধীনসেশন জুড়ে (ব্রাউজার পুনরায় চালু করার পরেও) অ্যালার্মটি চালু থাকবে কিনা। ক্রোমে, পূর্ববর্তী আচরণের সাথে সামঞ্জস্য রাখতে এটি ডিফল্টরূপে 'ট্রু' থাকে, কিন্তু বিভিন্ন ব্রাউজারে সর্বোচ্চ সামঞ্জস্যতা নিশ্চিত করতে আপনার এটি স্পষ্টভাবে সেট করা উচিত।
- যখন
সংখ্যা ঐচ্ছিক
যে সময়ে অ্যালার্মটি বাজবে, তা ইপকের পর মিলিসেকেন্ডে প্রকাশ করতে হবে (যেমন
Date.now() + n)।
পদ্ধতি
clear()
chrome.alarms.clear(
name?: string,
): Promise<boolean>
প্রদত্ত নামের অ্যালার্মটি নিষ্ক্রিয় করে।
প্যারামিটার
- নাম
স্ট্রিং ঐচ্ছিক
যে অ্যালার্মটি মুছে ফেলতে চান তার নাম। ডিফল্টরূপে এটি একটি খালি স্ট্রিং থাকে।
ফেরত
প্রতিশ্রুতি<বুলিয়ান>
ক্রোম ৯১+
clearAll()
chrome.alarms.clearAll(): Promise<boolean>
সমস্ত অ্যালার্ম মুছে দেয়।
ফেরত
প্রতিশ্রুতি<বুলিয়ান>
ক্রোম ৯১+
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
): Promise<void>
একটি অ্যালার্ম তৈরি করে। alarmInfo দ্বারা নির্দিষ্ট করা সময়ের কাছাকাছি onAlarm ইভেন্টটি সক্রিয় হয়। যদি একই নামের (অথবা কোনো নাম নির্দিষ্ট না করা হলে নামবিহীন) অন্য কোনো অ্যালার্ম থাকে, তবে সেটি বাতিল হয়ে যাবে এবং এই অ্যালার্মটি দ্বারা প্রতিস্থাপিত হবে।
ব্যবহারকারীর মেশিনের উপর চাপ কমাতে, ক্রোম অ্যালার্মকে প্রতি ৩০ সেকেন্ডে সর্বোচ্চ একবার পর্যন্ত সীমাবদ্ধ রাখে, তবে প্রয়োজনে এর চেয়ে বেশি সময় পর্যন্ত বিলম্ব করতে পারে। অর্থাৎ, delayInMinutes বা periodInMinutes মান 0.5 এর কম সেট করলে তা কার্যকর হবে না এবং একটি সতর্কবার্তা দেখাবে। when "now"-এর ৩০ সেকেন্ডের কম সময়ে সেট করলে কোনো সতর্কবার্তা ছাড়াই অ্যালার্ম বাজবে, কিন্তু এর ফলে অ্যালার্মটি আসলে কমপক্ষে ৩০ সেকেন্ড পর্যন্ত বাজবে না।
আপনার অ্যাপ বা এক্সটেনশন ডিবাগ করতে সাহায্য করার জন্য, যখন আপনি এটিকে আনপ্যাক করে লোড করেন, তখন অ্যালার্মটি কতবার বাজবে তার কোনো সীমা থাকে না।
প্যারামিটার
- নাম
স্ট্রিং ঐচ্ছিক
এই অ্যালার্মটি শনাক্ত করার জন্য ঐচ্ছিক নাম। ডিফল্টরূপে এটি একটি খালি স্ট্রিং থাকে।
- অ্যালার্মইনফো
অ্যালার্মটি কখন বাজবে তা বর্ণনা করে। প্রাথমিক সময়টি অবশ্যই `
whenঅথবাdelayInMinutes(দুটোই একসাথে নয়) দ্বারা নির্দিষ্ট করতে হবে। যদিperiodInMinutesসেট করা থাকে, তাহলে প্রাথমিক ঘটনার পর প্রতিperiodInMinutesমিনিটে অ্যালার্মটি পুনরাবৃত্তি হবে। যদি কোনো পুনরাবৃত্তিমূলক অ্যালার্মের জন্যwhenবাdelayInMinutesকোনোটিই সেট করা না থাকে, তাহলেdelayInMinutesএর ডিফল্ট হিসেবেperiodInMinutesব্যবহৃত হবে।
ফেরত
প্রতিশ্রুতি<শূন্য>
ক্রোম ১১১+এমন একটি প্রতিশ্রুতি যা অ্যালার্ম তৈরি হয়ে গেলে কার্যকর হয়।
get()
chrome.alarms.get(
name?: string,
): Promise<Alarm | undefined>
নির্দিষ্ট অ্যালার্মটির বিস্তারিত তথ্য পুনরুদ্ধার করে।
প্যারামিটার
- নাম
স্ট্রিং ঐচ্ছিক
যে অ্যালার্মটি পেতে চান তার নাম। ডিফল্টরূপে এটি একটি খালি স্ট্রিং থাকে।
ফেরত
প্রতিশ্রুতি< অ্যালার্ম | অনির্দিষ্ট>
ক্রোম ৯১+
ফেরত
প্রতিশ্রুতি< অ্যালার্ম []>
ক্রোম ৯১+