chrome.alarms

ब्यौरा

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

अनुमतियां

alarms

chrome.alarms एपीआई का इस्तेमाल करने के लिए, मेनिफ़ेस्ट में "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-सैंपल डेटा स्टोर करने की जगह से अलार्म एपीआई का उदाहरण इंस्टॉल करें.

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

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

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

    नंबर

    वह समय जब इस अलार्म को epoch के बाद (जैसे कि Date.now() + n) के बाद सक्रिय होने के लिए शेड्यूल किया गया था. प्रदर्शन कारणों से, अलार्म को इससे आगे के किसी भी अनिश्चित समय पर ट्रिगर किया जा सकता है.

AlarmCreateInfo

प्रॉपर्टी

  • delayInMinutes

    नंबर ज़रूरी नहीं

    समय की अवधि (मिनट में). इसके बाद, onAlarm इवेंट ट्रिगर होगा.

  • periodInMinutes

    नंबर ज़रूरी नहीं

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

  • कब

    नंबर ज़रूरी नहीं

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

तरीके

clear()

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

दिए गए नाम से अलार्म हटाता है.

पैरामीटर

  • नाम

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

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

  • कॉलबैक

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

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

    (wasCleared: boolean)=>void

    • wasCleared

      boolean

लौटाए गए प्रॉडक्ट

  • Promise<boolean>

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

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

clearAll()

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

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

पैरामीटर

  • कॉलबैक

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

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

    (wasCleared: boolean)=>void

    • wasCleared

      boolean

लौटाए गए प्रॉडक्ट

  • Promise<boolean>

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

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

  • कॉलबैक

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

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

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

    ()=>void

लौटाए गए प्रॉडक्ट

  • Promise<void>

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

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

get()

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

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

पैरामीटर

  • नाम

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

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

  • कॉलबैक

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

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

    (alarm?: Alarm)=>void

लौटाए गए प्रॉडक्ट

  • वादा<अलार्म|undefined>

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

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

getAll()

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

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

पैरामीटर

  • कॉलबैक

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

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

    (alarms: Alarm[])=>void

लौटाए गए प्रॉडक्ट

  • वादा<अलार्म[]>

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

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

इवेंट

onAlarm

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

अलार्म खत्म होने पर सक्रिय होता है. इवेंट पेजों के लिए उपयोगी.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (alarm: Alarm)=>void