شرح
از میانای برنامهسازی کاربردی chrome.alarms برای زمانبندی کد برای اجرا بهصورت دورهای یا در زمان مشخصی در آینده استفاده کنید.
اجازهها
alarmsبرای استفاده از «میانای برنامهسازی کاربردی» browser.alarms، اجازه "alarms" را در مانیفست اعلام کنید:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
مفاهیم و کاربرد
برای اطمینان از رفتار قابلاعتماد، درک نحوه رفتار API مفید است.
خواب دستگاه
وقتی دستگاه در حالت خواب است، زنگهای ساعت همچنان اجرا میشوند. بااینحال، زنگ ساعت دستگاه را فعال نخواهد کرد. وقتی دستگاه بیدار میشود، هر زنگ ساعتی که ازدست رفته باشد بهصدا درمیآید. زنگهای تکرارشونده حداکثر یکبار بهصدا درمیآیند و سپس بااستفاده از دوره مشخصشده از زمان بیدار شدن دستگاه، بدون درنظر گرفتن زمانی که از تنظیم اولیه زنگ برای اجرا گذشته است، دوباره زمانبندی میشوند.
پایداری
میتوانید پایداری زنگ هشدار را در زمان ایجاد بااستفاده از پرچم persistAcrossSessions کنترل کنید. این مقدار میتواند روی true (تا زمانی که افزونه بهروز شود باقی میماند) یا false (اگر افزونه مجدداً بار شود یا مرورگر بازراهاندازی شود، و هر زمان که افزونه بهروز شود پاک میشود) تنظیم شود.
مرورگرهای دیگر و نسخههای قدیمیتر Chrome
این ویژگی در مرورگرهای دیگر (مشکل) یا در نسخههای Chrome قبلاز Chrome 150 پشتیبانی نمیشود، که در آنها رفتار میتواند غیرقابلپیشبینی باشد. بنابراین، بهتر است مطمئن شوید که هربار که کارگر سرویس شما راهاندازی میشود، هشدارهای مهم وجود دارند. برای مثال:
async function checkAlarmState() {
const alarm = await browser.alarms.get("my-alarm");
if (!alarm) {
await browser.alarms.create("my-alarm", { periodInMinutes: 1 });
}
}
checkAlarmState();
اگر زنگ ساعت شما بهطور پویا براساس کنش کاربر ایجاد شده است، شاید بخواهید ذخیره کنید که زنگ ساعت در جای دیگری ایجاد شده است تا بدانید درصورت نیاز آن را دوباره ایجاد کنید.
مثالها
مثالهای زیر نحوه استفاده و پاسخ دادن به زنگ ساعت را نشان میدهد. برای امتحان کردن این میانای برنامهسازی کاربردی، نمونه Alarm API را از مخزن chrome-extension-samples نصب کنید.
تنظیم زنگ ساعت
مثال زیر زنگ هشداری را در کارگر سرویس تنظیم میکند که وقتی نسخه جدیدی از افزونه نصب میشود فعال میشود:
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 نسخه ۱۵۰ و بالاترآیا زنگ هشدار باید در جلسات (بازراهاندازی مرورگر) باقی بماند یا نه.
-
scheduledTime
شماره
زمانی که این زنگ ساعت برای بهصدا درآمدن زمانبندی شده است، برحسب میلیثانیه پساز مبدأ (مثلاً
Date.now() + n). بهدلایل عملکردی، ممکن است زنگ ساعت بهمدت دلخواهی پساز این زمان بهتأخیر افتاده باشد.
AlarmCreateInfo
مشخصات
-
delayInMinutes
شماره اختیاری
مدت زمان برحسب دقیقه که پساز آن رویداد
onAlarmباید اجرا شود. -
نام
رشته اختیاری
Chrome نسخه ۱۵۲ و بالاترنام این زنگ ساعت.
-
periodInMinutes
شماره اختیاری
درصورت تنظیم، رویداد onAlarm باید هر
periodInMinutesدقیقه پساز رویداد اولیه مشخصشده توسطwhenیاdelayInMinutesاجرا شود. اگر تنظیم نشده باشد، زنگ ساعت فقط یکبار بهصدا درمیآید. -
persistAcrossSessions
بولی اختیاری
Chrome نسخه ۱۵۰ و بالاترآیا زنگ هشدار باید در جلسات (بازراهاندازی مرورگر) باقی بماند یا نه. در Chrome، این مقدار بهطور پیشفرض روی true تنظیم شده است تا با رفتار گذشته مطابقت داشته باشد، اما باید آن را بهطور صریح تنظیم کنید تا سازگاری بین مرورگرها به حداکثر برسد.
-
چه زمانی
شماره اختیاری
زمانی که زنگ ساعت باید بهصدا درآید، برحسب میلیثانیه پساز مبدأ تاریخ (مثلاً
Date.now() + n).
روشها
clear()
browser.alarms.clear(
name?: string,
): Promise<boolean>
زنگ ساعت با نام ارائهشده را پاک میکند.
پارامترها
-
نام
رشته اختیاری
نام زنگ ساعتی که باید پاک شود. بهطور پیشفرض روی رشته خالی تنظیم میشود.
بازگشتیها
-
Promise<boolean>
Chrome نسخه ۹۱ و بالاتر browser.* از Chrome نسخه ۱۴۸
clearAll()
browser.alarms.clearAll(): Promise<boolean | undefined>
همه زنگهای ساعت را پاک میکند.
بازگشتیها
-
Promise<boolean | undefined>
Chrome نسخه ۹۱ و بالاتر browser.* از Chrome نسخه ۱۴۸
create()
browser.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
): Promise<void>
زنگ ساعتی ایجاد میکند. نزدیک زمان(های) مشخصشده توسط alarmInfo، رویداد onAlarm اجرا میشود. اگر زنگ ساعت دیگری با همین نام (یا بدون نام، اگر نامی مشخص نشده باشد) وجود داشته باشد، لغو میشود و این زنگ ساعت جایگزین آن میشود.
برای کاهش بار روی دستگاه کاربر، Chrome هشدارها را به حداکثر یک بار در ثانیه محدود میکند اما ممکن است آنها را بهاندازه دلخواه بیشتر بهتأخیر بیندازد. یعنی تنظیم delayInMinutes یا periodInMinutes روی کمتر از ۱ ثانیه پذیرفته نخواهد شد و باعث ایجاد هشدار میشود. when را میتوان بدون هشدار روی کمتر از ۱ ثانیه بعداز «اکنون» تنظیم کرد، اما درواقع باعث نمیشود زنگ ساعت حداقل تا ۱ ثانیه بهصدا درآید.
پارامترها
-
نام
رشته اختیاری
نام اختیاری برای شناسایی این زنگ هشدار. بهطور پیشفرض روی رشته خالی تنظیم میشود.
-
alarmInfo
توضیح میدهد زنگ ساعت چه زمانی باید بهصدا درآید. زمان اولیه باید با
whenیاdelayInMinutes(اما نه هر دو) مشخص شود. اگرperiodInMinutesتنظیم شده باشد، زنگ ساعت هرperiodInMinutesدقیقه پساز رویداد اولیه تکرار خواهد شد. اگر هیچکدام ازwhenیاdelayInMinutesبرای زنگ ساعت تکرارشونده تنظیم نشده باشد،periodInMinutesبهعنوان پیشفرض برایdelayInMinutesاستفاده میشود.
بازگشتیها
-
Promise<void>
Chrome 111+ browser.* از Chrome 148Promise که وقتی زنگ هشدار ایجاد شد حلوفصل میشود.
get()
browser.alarms.get(
name?: string,
): Promise<Alarm | undefined>
جزئیات مربوط به زنگ مشخصشده را بازیابی میکند.
پارامترها
-
نام
رشته اختیاری
نام زنگ هشداری که باید دریافت شود. بهطور پیشفرض روی رشته خالی تنظیم میشود.
بازگشتیها
-
Promise<Alarm | undefined>
Chrome نسخه ۹۱ و بالاتر browser.* از Chrome نسخه ۱۴۸
بازگشتیها
-
Promise<Alarm[]>
Chrome نسخه ۹۱ و بالاتر browser.* از Chrome نسخه ۱۴۸