chrome.alarms

الوصف

استخدِم واجهة برمجة التطبيقات 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

    number اختياري

    إذا لم يكن فارغًا، يكون المنبّه متكرّرًا وسيتم تشغيله مرة أخرى بعد periodInMinutes دقيقة.

  • scheduledTime

    الرقم

    الوقت الذي تم فيه تحديد موعد تشغيل هذا المنبّه، بالمللي ثانية بعد العصر (مثل Date.now() + n). لأسباب تتعلّق بالأداء، ربما تم تأخير المنبّه بمقدار عشوائي يتجاوز هذا الوقت.

AlarmCreateInfo

الخصائص

  • delayInMinutes

    number اختياري

    تمثّل هذه السمة المدة الزمنية بالدقائق التي يجب أن يتم بعدها تنشيط الحدث onAlarm.

  • periodInMinutes

    number اختياري

    في حال ضبط هذه السمة، يجب أن يتم تنشيط الحدث onAlarm كل periodInMinutes دقيقة بعد الحدث الأوّلي المحدّد بواسطة when أو delayInMinutes. في حال عدم ضبطه، سيتم تشغيل المنبّه مرة واحدة فقط.

  • متى

    number اختياري

    الوقت الذي يجب أن يتم فيه تشغيل المنبّه، بالملي ثانية بعد بداية الحقبة (مثلاً Date.now() + n).

الطُرق

clear()

chrome.alarms.clear(
  name?: string,
)
: Promise<boolean>

يمحو هذا الإجراء المنبّه الذي يحمل الاسم المحدّد.

المعلمات

  • الاسم

    سلسلة اختيارية

    تمثّل هذه السمة اسم المنبّه المطلوب إيقافه. القيمة التلقائية هي السلسلة الفارغة.

المرتجعات

  • Promise<boolean>

    الإصدار 91 من Chrome والإصدارات الأحدث

clearAll()

chrome.alarms.clearAll(): Promise<boolean>

يمحو جميع المنبّهات.

المرتجعات

  • Promise<boolean>

    الإصدار 91 من Chrome والإصدارات الأحدث

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>

    الإصدار 111 من Chrome والإصدارات الأحدث

get()

chrome.alarms.get(
  name?: string,
)
: Promise<Alarm | undefined>

تعرض هذه الطريقة تفاصيل حول المنبّه المحدّد.

المعلمات

  • الاسم

    سلسلة اختيارية

    اسم المنبّه المطلوب الحصول عليه القيمة التلقائية هي السلسلة الفارغة.

المرتجعات

  • Promise<Alarm | undefined>

    الإصدار 91 من Chrome والإصدارات الأحدث

getAll()

chrome.alarms.getAll(): Promise<Alarm[]>

تعرض هذه الطريقة مصفوفة تتضمّن جميع المنبّهات.

المرتجعات

  • Promise<Alarm[]>

    الإصدار 91 من Chrome والإصدارات الأحدث

الفعاليات

onAlarm

chrome.alarms.onAlarm.addListener(
  callback: function,
)

يتم إطلاقه عند انتهاء مدة المنبّه. مفيدة لصفحات الأحداث.

المعلمات

  • callback

    دالة

    تظهر المَعلمة callback على النحو التالي:

    (alarm: Alarm) => void