الوصف
استخدِم واجهة برمجة التطبيقات chrome.alarms لجدولة تنفيذ الرمز بشكل دوري أو في وقت محدّد في المستقبل.
الأذونات
alarmsالبيان
لاستخدام واجهة برمجة التطبيقات chrome.alarms، عليك الإعلان عن إذن "alarms" في البيان:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
أمثلة
توضّح الأمثلة التالية كيفية استخدام المنبّه والاستجابة له. لتجربة واجهة برمجة التطبيقات هذه، ثبِّت مثال Alarm API من مستودع chrome-extension-samples.
ضبط منبّه
يضبط المثال التالي منبّهًا في مشغّل الخدمات عند تثبيت الإضافة:
service-worker.js:
chrome.runtime.onInstalled.addListener(async ({ reason }) => {
if (reason !== 'install') {
return;
}
// Create an alarm so we have something to look at in the demo
await chrome.alarms.create('demo-default-alarm', {
delayInMinutes: 1,
periodInMinutes: 1
});
});
الاستجابة لمنبّه
يضبط المثال التالي رمز شريط أدوات الإجراء استنادًا إلى اسم المنبّه الذي تم تشغيله.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
الأنواع
Alarm
الخصائص
-
name
سلسلة
اسم هذا المنبّه.
-
periodInMinutes
رقم (اختياري)
إذا لم تكن القيمة خالية، يكون المنبّه متكررًا وسيتم تشغيله مرة أخرى بعد
periodInMinutesدقيقة. -
persistAcrossSessions
قيمة منطقية
Chrome 150 والإصدارات الأحدثتحديد ما إذا كان يجب أن يبقى المنبّه نشطًا خلال الجلسات (إعادة تشغيل المتصفّح)
-
scheduledTime
الرقم
الوقت الذي تم فيه ضبط المنبّه ليتم تشغيله، بالملّي ثانية منذ بداية الحقبة (مثلاً
Date.now() + n). لأسباب متعلّقة بالأداء، قد يتم تأخير المنبّه بمقدار عشوائي يتجاوز هذا الوقت.
AlarmCreateInfo
الخصائص
-
delayInMinutes
رقم (اختياري)
المدة بالدقائق التي يجب بعدها تشغيل الحدث
onAlarm -
name
سلسلة اختياري
Chrome 152 والإصدارات الأحدثاسم هذا المنبّه.
-
periodInMinutes
رقم (اختياري)
إذا تم ضبط هذه القيمة، يجب تشغيل الحدث onAlarm كل
periodInMinutesدقيقة بعد الحدث الأولي المحدّد من خلالwhenأوdelayInMinutes. إذا لم يتم ضبط هذه القيمة، سيتم تشغيل المنبّه مرة واحدة فقط. -
persistAcrossSessions
قيمة منطقية اختياري
Chrome 150 والإصدارات الأحدثتحديد ما إذا كان يجب أن يبقى المنبّه نشطًا خلال الجلسات (إعادة تشغيل المتصفّح) في Chrome، يتم ضبط هذه القيمة تلقائيًا على "صحيح" لتتطابق مع السلوك السابق، ولكن عليك ضبطها بشكل صريح لتحقيق أقصى قدر من التوافق مع المتصفّحات المختلفة.
-
when
رقم (اختياري)
الوقت الذي يجب فيه تشغيل المنبّه، بالملّي ثانية منذ بداية الحقبة (مثلاً
Date.now() + n)
الطُرق
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
): Promise<boolean>
يزيل المنبّه الذي يحمل الاسم المحدّد.
المعلمات
-
name
سلسلة اختياري
اسم المنبّه الذي تريد إزالته يتم ضبط هذه القيمة تلقائيًا على السلسلة الفارغة.
-
callback
دالة (اختياري)
تبدو مَعلمة
callbackعلى النحو التالي:(wasCleared: boolean) => void
-
wasCleared
قيمة منطقية
-
المرتجعات
-
Promise<boolean>
Chrome 91 والإصدارات الأحدثلا تتوافق الوعود إلا مع Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام دوال ردّ الاتصال.
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean>
يزيل جميع المنبّهات.
المعلمات
-
callback
دالة (اختياري)
تبدو مَعلمة
callbackعلى النحو التالي:(wasCleared: boolean) => void
-
wasCleared
قيمة منطقية
-
المرتجعات
-
Promise<boolean>
Chrome 91 والإصدارات الأحدثلا تتوافق الوعود إلا مع Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام دوال ردّ الاتصال.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
ينشئ منبّهًا. يتم تشغيل الحدث onAlarm في الأوقات المحدّدة من خلال alarmInfo. إذا كان هناك منبّه آخر يحمل الاسم نفسه (أو بدون اسم إذا لم يتم تحديد اسم)، سيتم إلغاؤه واستبداله بهذا المنبّه.
للحدّ من الحمل على جهاز المستخدم، يقتصر Chrome على تشغيل المنبّهات مرة واحدة على الأكثر كل 30 ثانية، ولكن قد يتم تأخيرها بمقدار عشوائي إضافي. أي أنّه لن يتم تنفيذ ضبط delayInMinutes أو periodInMinutes على أقل من 0.5 وسيؤدي ذلك إلى ظهور تحذير. يمكن ضبط when على أقل من 30 ثانية بعد "الآن" بدون ظهور تحذير، ولكن لن يؤدي ذلك فعليًا إلى تشغيل المنبّه لمدة 30 ثانية على الأقل.
لمساعدتك في تصحيح أخطاء تطبيقك أو إضافتك، لا يوجد حدّ لعدد مرات تشغيل المنبّه عند تحميله بدون ضغطه.
المعلمات
-
name
سلسلة اختياري
اسم اختياري لتحديد هذا المنبّه يتم ضبط هذه القيمة تلقائيًا على السلسلة الفارغة.
-
alarmInfo
تحديد وقت تشغيل المنبّه يجب تحديد الوقت الأولي من خلال
whenأوdelayInMinutes(وليس كليهما). إذا تم ضبطperiodInMinutes، سيتكرّر المنبّه كلperiodInMinutesدقيقة بعد الحدث الأولي. إذا لم يتم ضبطwhenأوdelayInMinutesلمنبّه متكرّر، يتم استخدامperiodInMinutesكقيمة تلقائية لـdelayInMinutes. -
callback
دالة (اختياري)
Chrome 111 والإصدارات الأحدثتبدو مَعلمة
callbackعلى النحو التالي:() => void
المرتجعات
-
Promise<void>
Chrome 111 والإصدارات الأحدثوعد يتم تنفيذه عند إنشاء المنبّه
لا تتوافق الوعود إلا مع Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام دوال ردّ الاتصال.
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
يستردّ تفاصيل حول المنبّه المحدّد.
المعلمات
المرتجعات
-
Promise<Alarm | undefined>
Chrome 91 والإصدارات الأحدثلا تتوافق الوعود إلا مع Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام دوال ردّ الاتصال.
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
يحصل على مصفوفة تضم جميع المنبّهات.
المعلمات
المرتجعات
-
Promise<Alarm[]>
Chrome 91 والإصدارات الأحدثلا تتوافق الوعود إلا مع Manifest V3 والإصدارات الأحدث، بينما تحتاج المنصات الأخرى إلى استخدام دوال ردّ الاتصال.