chrome.alarms

ब्यौरा

chrome.alarms API का इस्तेमाल करके, कोड को समय-समय पर या भविष्य में किसी तय समय पर चलाने के लिए शेड्यूल किया जा सकता है.

अनुमतियां

alarms

chrome.alarms API का इस्तेमाल करने के लिए, "alarms" अनुमति का एलान मेनिफ़ेस्ट में करें:

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

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

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

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

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

स्थायी

persistAcrossSessions फ़्लैग का इस्तेमाल करके, अलार्म को बनाते समय यह तय किया जा सकता है कि वह स्थायी हो या नहीं. इसे true (एक्सटेंशन के अपडेट होने तक बना रहता है) या false (एक्सटेंशन को फिर से लोड करने या ब्राउज़र को रीस्टार्ट करने पर मिट जाता है. साथ ही, एक्सटेंशन के अपडेट होने पर भी मिट जाता है) पर सेट किया जा सकता है.

अन्य ब्राउज़र और Chrome के पुराने वर्शन

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

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 }) => {
  // Create an alarm so we have something to look at in the demo
  await chrome.alarms.create('demo-default-alarm', {
    delayInMinutes: 1,
    periodInMinutes: 1,
    persistAcrossSessions: true
  });
});

अलार्म बजने पर कार्रवाई करना

यहां दिए गए उदाहरण में, अलार्म बजने पर ऐक्शन टूलबार आइकॉन सेट करने का तरीका बताया गया है.

service-worker.js:

chrome.alarms.onAlarm.addListener((alarm) => {
  chrome.action.setIcon({
    path: getIconPath(alarm.name),
  });
});

टाइप

Alarm

प्रॉपर्टी

  • नाम

    स्ट्रिंग

    इस अलार्म का नाम.

  • periodInMinutes

    संख्या ज़रूरी नहीं

    अगर यह वैल्यू null नहीं है, तो अलार्म बार-बार बजेगा और periodInMinutes मिनट बाद फिर से बजेगा.

  • persistAcrossSessions

    बूलियन

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

    चुनें कि अलार्म, सेशन के दौरान (ब्राउज़र रीस्टार्ट होने पर) बना रहना चाहिए या नहीं.

  • scheduledTime

    संख्या

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

AlarmCreateInfo

प्रॉपर्टी

  • delayInMinutes

    संख्या ज़रूरी नहीं

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

  • नाम

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

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

    इस अलार्म का नाम.

  • periodInMinutes

    संख्या ज़रूरी नहीं

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

  • persistAcrossSessions

    बूलियन ज़रूरी नहीं

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

    चुनें कि अलार्म, सेशन के दौरान (ब्राउज़र रीस्टार्ट होने पर) बना रहना चाहिए या नहीं. Chrome में, यह वैल्यू डिफ़ॉल्ट तौर पर 'सही' पर सेट होती है, ताकि यह पुराने वर्शन के हिसाब से काम करे. हालांकि, आपको इसे साफ़ तौर पर सेट करना चाहिए, ताकि यह ज़्यादा से ज़्यादा ब्राउज़र के साथ काम कर सके.

  • कब

    संख्या ज़रूरी नहीं

    वह समय जब अलार्म बजना चाहिए.यह समय, epoch के बाद के मिलीसेकंड में होता है. जैसे, 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 और इसके बाद के वर्शन

getAll()

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

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

रिटर्न

  • Promise<Alarm[]>

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

इवेंट

onAlarm

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (alarm: Alarm) => void