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