chrome.alarms

ब्यौरा

कोड को समय-समय पर या आने वाले समय में किसी तय समय पर चलाने के लिए, chrome.alarms API का इस्तेमाल करें.

अनुमतियां

alarms

chrome.alarms एपीआई का इस्तेमाल करने के लिए, manifest में "alarms" अनुमति का एलान करें:

{
  "name": "My extension",
  ...
  "permissions": [
    "alarms"
  ],
  ...
}

कॉन्सेप्ट और इस्तेमाल

एपीआई के काम करने का तरीका समझने से, यह पक्का करने में मदद मिलती है कि वह भरोसेमंद है या नहीं.

डिवाइस स्लीप मोड

डिवाइस के स्लीप मोड में होने पर भी अलार्म बजते रहते हैं. हालांकि, अलार्म से डिवाइस नहीं जगेगा. डिवाइस के चालू होने पर, छूटे हुए अलार्म बजने लगेंगे. बार-बार बजने वाले अलार्म, ज़्यादा से ज़्यादा एक बार बजेंगे. इसके बाद, डिवाइस के चालू होने के बाद से तय की गई अवधि के हिसाब से, अलार्म फिर से शेड्यूल हो जाएगा. इसमें, अलार्म के मूल रूप से बजने के लिए सेट किए गए समय के बाद बीत चुके समय को शामिल नहीं किया जाएगा.

परसिस्टेंस

आम तौर पर, एक्सटेंशन अपडेट होने तक अलार्म बजते रहते हैं. हालांकि, इसकी कोई गारंटी नहीं है. साथ ही, ब्राउज़र को रीस्टार्ट करने पर, अलार्म मिट सकते हैं. इसलिए, अलार्म बनाने के बाद स्टोरेज में कोई वैल्यू सेट करें. साथ ही, पक्का करें कि आपका सेवा वर्कर हर बार शुरू होने पर वह वैल्यू मौजूद हो. उदाहरण के लिए:

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();

उदाहरण

नीचे दिए गए उदाहरणों में, अलार्म का इस्तेमाल करने और उस पर कार्रवाई करने का तरीका बताया गया है. इस एपीआई को आज़माने के लिए, chrome-extension-samples रिपॉज़िटरी से Alarm API का उदाहरण इंस्टॉल करें.

अलार्म सेट करो

यहां दिए गए उदाहरण में, एक्सटेंशन इंस्टॉल होने पर सेवा वर्कर में अलार्म सेट किया गया है:

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 ज़रूरी नहीं

    अगर सेट किया गया है, तो when या delayInMinutes से तय किए गए शुरुआती इवेंट के बाद, हर periodInMinutes मिनट में onAlarm इवेंट ट्रिगर होना चाहिए. अगर यह सेट नहीं किया गया है, तो अलार्म सिर्फ़ एक बार बजेगा.

  • कब

    number ज़रूरी नहीं

    वह समय जब अलार्म बजना चाहिए. यह समय, युग के बाद के मिलीसेकंड में होता है (उदाहरण के लिए, Date.now() + n).

तरीके

clear()

वादा करना
chrome.alarms.clear(
  name?: string,
  callback?: function,
)

दिए गए नाम वाला अलार्म बंद कर देता है.

पैरामीटर

  • नाम

    स्ट्रिंग ज़रूरी नहीं

    जिस अलार्म को बंद करना है उसका नाम. डिफ़ॉल्ट रूप से, यह खाली स्ट्रिंग होती है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (wasCleared: boolean) => void

    • wasCleared

      बूलियन

रिटर्न

  • Promise<boolean>

    Chrome 91 और उसके बाद के वर्शन

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

clearAll()

वादा करना
chrome.alarms.clearAll(
  callback?: function,
)

सभी अलार्म हटा देता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (wasCleared: boolean) => void

    • wasCleared

      बूलियन

रिटर्न

  • Promise<boolean>

    Chrome 91 और उसके बाद के वर्शन

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

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 में से कोई भी विकल्प सेट नहीं किया गया है, तो delayInMinutes के लिए डिफ़ॉल्ट रूप से periodInMinutes का इस्तेमाल किया जाता है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    Chrome 111 और उसके बाद के वर्शन

    callback पैरामीटर इस तरह दिखता है:

    () => void

रिटर्न

  • Promise<void>

    Chrome 111 और उसके बाद के वर्शन

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

get()

वादा करना
chrome.alarms.get(
  name?: string,
  callback?: function,
)

किसी खास अलार्म के बारे में जानकारी दिखाता है.

पैरामीटर

  • नाम

    स्ट्रिंग ज़रूरी नहीं

    आपको जिस अलार्म की सूचना चाहिए उसका नाम. डिफ़ॉल्ट रूप से, यह खाली स्ट्रिंग होती है.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (alarm?: Alarm) => void

रिटर्न

  • Promise<Alarm | undefined>

    Chrome 91 और उसके बाद के वर्शन

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

getAll()

वादा करना
chrome.alarms.getAll(
  callback?: function,
)

सभी अलार्म का कलेक्शन दिखाता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

    callback पैरामीटर इस तरह दिखता है:

    (alarms: Alarm[]) => void

रिटर्न

  • Promise<Alarm[]>

    Chrome 91 और उसके बाद के वर्शन

    मेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.

इवेंट

onAlarm

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

अलार्म बंद होने पर ट्रिगर होता है. इवेंट पेजों के लिए मददगार.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर इस तरह दिखता है:

    (alarm: Alarm) => void