الوصف
استخدِم واجهة برمجة التطبيقات chrome.alarms
لجدولة تنفيذ الرمز بشكل دوري أو في وقت محدّد في المستقبل.
الأذونات
alarms
لاستخدام واجهة برمجة التطبيقات chrome.alarms
API، يجب الإفصاح عن الإذن "alarms"
في manifest:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
المفاهيم وطريقة الاستخدام
لضمان السلوك الموثوق، من المفيد فهم سلوك واجهة برمجة التطبيقات.
وضع السكون للجهاز
يستمر تشغيل المنبّهات عندما يكون الجهاز في وضع السكون. ومع ذلك، لن يؤدي المنبّه إلى desperte جهاز. عند تنشيط الجهاز، سيتم تشغيل أي منبّهات لم يتم تفعيلها. سيتم تشغيل المنبّهات المتكرّرة مرة واحدة بحد أقصى، ثم ستتم إعادة جدولتها باستخدام المدّة المحدّدة بدءًا من وقت تنشيط الجهاز، بدون مراعاة أي وقت مضى منذ ضبط المنبّه في الأصل ليعمل.
الاستمرارية
تستمر الإنذارات بشكل عام إلى أن يتم تحديث إضافة. ومع ذلك، لا يمكن ضمان ذلك، وقد يتم محو التنبيهات عند إعادة تشغيل المتصفّح. نتيجةً لذلك، ننصحك بضبط قيمة في مساحة التخزين عند إنشاء إنذار، ثم التأكّد من توفّرها في كل مرة يتم فيها تشغيل الخدمة. على سبيل المثال:
const STORAGE_KEY = "user-preference-alarm-enabled";
async function checkAlarmState() {
const { alarmEnabled } = await chrome.storage.get(STORAGE_KEY);
if (alarmEnabled) {
const alarm = await chrome.alarms.get("my-alarm");
if (!alarm) {
await chrome.alarms.create({ periodInMinutes: 1 });
}
}
}
checkAlarmState();
أمثلة
توضِّح الأمثلة التالية كيفية استخدام المنبّه والاستجابة له. لتجربة واجهة برمجة التطبيقات هذه، ثبِّت مثال 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
أماكن إقامة
-
الاسم
سلسلة
اسم هذا المنبّه.
-
periodInMinutes
رقم اختياري
إذا لم يكن القيمة فارغة، يعني ذلك أنّ المنبّه متكرّر وسيرنّ مرة أخرى بعد
periodInMinutes
دقيقة. -
scheduledTime
الرقم
الوقت الذي تم تحديده لتشغيل هذا التنبيه، بالكيلوميلّي ثانية منذ بدء حساب الوقت (مثل
Date.now() + n
). قد يتأخّر التنبيه بمقدار عشوائي بعد هذا الوقت لأسباب تتعلّق بالأداء.
AlarmCreateInfo
أماكن إقامة
-
delayInMinutes
رقم اختياري
المدة الزمنية بالدقائق التي من المفترض أن يتم بعد انقضائها تنشيط الحدث
onAlarm
-
periodInMinutes
رقم اختياري
في حال ضبطه، من المفترض أن يتم تنشيط الحدث onAlarm كل
periodInMinutes
دقيقة بعد الحدث الأولي المحدَّد بواسطةwhen
أوdelayInMinutes
. في حال عدم ضبطه، سيتم تشغيل المنبّه مرة واحدة فقط. -
متى
رقم اختياري
الوقت الذي يجب أن يرن فيه المنبّه، بالملي ثانية بعد بدء حساب الوقت (مثل
Date.now() + n
).
الطُرق
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
)
تمحو المنبّه الذي يحمل الاسم المحدّد.
المعلمات
-
الاسم
سلسلة اختيارية
اسم المنبّه المطلوب محوه يتم ضبط هذه السمة تلقائيًا على السلسلة الفارغة.
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(wasCleared: boolean) => void
-
wasCleared
قيمة منطقية
-
المرتجعات
-
Promise<boolean>
Chrome 91 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
clearAll()
chrome.alarms.clearAll(
callback?: function,
)
محو جميع المنبّهات
المعلمات
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(wasCleared: boolean) => void
-
wasCleared
قيمة منطقية
-
المرتجعات
-
Promise<boolean>
Chrome 91 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
)
لإنشاء منبّه بالقرب من الأوقات التي يحدّدها alarmInfo
، يتم تشغيل الحدث onAlarm
. إذا كان هناك منبّه آخر يحمل الاسم نفسه (أو بدون اسم إذا لم يتم تحديد أي اسم)، سيتم إلغاؤه واستبداله بهذا المنبّه.
لتقليل الضغط على جهاز المستخدم، يحدّ Chrome من التنبيهات إلى مرة واحدة كل 30 ثانية كحد أقصى، ولكن قد يؤخّرها بمقدار عشوائي. وهذا يعني أنّه لن يتم ضبط delayInMinutes
أو periodInMinutes
على قيمة أقل من 0.5
، وسيؤدي ذلك إلى ظهور تحذير. يمكن ضبط when
على أقل من 30 ثانية بعد "الآن" بدون تحذير، ولكن لن يؤدي ذلك إلى تشغيل المنبّه لمدة 30 ثانية على الأقل.
لمساعدتك في تصحيح أخطاء تطبيقك أو إضافتك، بعد تحميله غير مفعَّل، لا يوجد حدّ لعدد المرات التي يمكن أن يتم فيها تشغيل المنبّه.
المعلمات
-
الاسم
سلسلة اختيارية
اسم اختياري لتحديد هذا التنبيه يتم ضبط هذه السمة تلقائيًا على السلسلة الفارغة.
-
alarmInfo
تصف هذه السمة الوقت الذي يجب فيه تنشيط المنبّه. يجب تحديد الوقت الأولي باستخدام
when
أوdelayInMinutes
(وليس كليهما). في حال ضبط القيمةperiodInMinutes
، سيتم تكرار التنبيه كلperiodInMinutes
دقيقة بعد الحدث الأولي. إذا لم يتم ضبطwhen
أوdelayInMinutes
لمنبّه متكرر، يتم استخدامperiodInMinutes
كقيمة تلقائية لـdelayInMinutes
. -
ردّ الاتصال
الدالة اختيارية
Chrome 111 والإصدارات الأحدثتظهر المَعلمة
callback
على النحو التالي:() => void
المرتجعات
-
Promise<void>
Chrome 111 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
get()
chrome.alarms.get(
name?: string,
callback?: function,
)
لاسترداد تفاصيل حول المنبّه المحدّد
المعلمات
المرتجعات
-
Promise<Alarm | undefined>
Chrome 91 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
getAll()
chrome.alarms.getAll(
callback?: function,
)
تحصل على صفيف من جميع المنبّهات.
المعلمات
المرتجعات
-
Promise<Alarm[]>
Chrome 91 والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.