browser.alarms

ब्यौरा

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

अनुमतियां

alarms

browser.alarms एपीआई का इस्तेमाल करने के लिए, मेनिफ़ेस्ट में "alarms" अनुमति के बारे में एलान करें:

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

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

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

डिवाइस स्लीप

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

परसिस्टेंस

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

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

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

async function checkAlarmState() {
  const alarm = await browser.alarms.get("my-alarm");

  if (!alarm) {
    await browser.alarms.create("my-alarm", { periodInMinutes: 1 });
  }
}

checkAlarmState();

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

उदाहरण

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

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

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

service-worker.js:

browser.runtime.onInstalled.addListener(async ({ reason }) => {
  // Create an alarm so we have something to look at in the demo
  await browser.alarms.create('demo-default-alarm', {
    delayInMinutes: 1,
    periodInMinutes: 1,
    persistAcrossSessions: true
  });
});

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

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

service-worker.js:

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

टाइप

Alarm

प्रॉपर्टी

  • नाम

    स्ट्रिंग

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

  • periodInMinutes

    number ज़रूरी नहीं

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

  • persistAcrossSessions

    बूलियन

    Chrome 150+

    क्या अलार्म को सभी सेशन (ब्राउज़र रीस्टार्ट) में चालू रखना है.

  • scheduledTime

    संख्या

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

AlarmCreateInfo

प्रॉपर्टी

  • delayInMinutes

    number ज़रूरी नहीं

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

  • नाम

    string ज़रूरी नहीं है

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

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

  • periodInMinutes

    number ज़रूरी नहीं

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

  • persistAcrossSessions

    boolean ज़रूरी नहीं है

    Chrome 150+

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

  • कब

    number ज़रूरी नहीं

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

तरीके

clear()

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

इस कुकी का इस्तेमाल, दिए गए नाम वाले अलार्म को हटाने के लिए किया जाता है.

पैरामीटर

  • नाम

    string ज़रूरी नहीं है

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

रिटर्न

  • Promise<boolean>

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

clearAll()

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

इससे सभी अलार्म मिट जाते हैं.

रिटर्न

  • Promise<boolean | undefined>

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

create()

chrome.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
)
: Promise<void>

अलार्म सेट करता है. alarmInfo में बताए गए समय के आस-पास, onAlarm इवेंट ट्रिगर होता है. अगर एक ही नाम वाला कोई दूसरा अलार्म सेट है या कोई नाम नहीं दिया गया है, तो उसे रद्द कर दिया जाएगा. उसकी जगह यह अलार्म सेट हो जाएगा.

उपयोगकर्ता के डिवाइस पर लोड कम करने के लिए, Chrome हर 30 सेकंड में सिर्फ़ एक बार अलार्म सेट करने की अनुमति देता है. हालांकि, अलार्म को किसी भी समय के लिए टाला जा सकता है. इसका मतलब है कि delayInMinutes या periodInMinutes को 0.5 से कम पर सेट करने पर, आपको चेतावनी दिखेगी और इस वैल्यू का इस्तेमाल नहीं किया जाएगा. when को "अभी" के बाद 30 सेकंड से कम पर सेट किया जा सकता है. हालांकि, ऐसा करने पर कोई चेतावनी नहीं मिलेगी. साथ ही, अलार्म कम से कम 30 सेकंड तक नहीं बजेगा.

अगर आपने अपने ऐप्लिकेशन या एक्सटेंशन को अनपैक करके लोड किया है, तो उसे डीबग करने में आपकी मदद करने के लिए, अलार्म के ट्रिगर होने की कोई सीमा नहीं होती.

पैरामीटर

  • नाम

    string ज़रूरी नहीं है

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

  • alarmInfo

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

रिटर्न

  • Promise<void>

    Chrome 111 या इसके बाद का वर्शन

    यह प्रॉमिस तब पूरा होता है, जब अलार्म सेट हो जाता है.

get()

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

इस फ़ंक्शन से, तय किए गए अलार्म के बारे में जानकारी मिलती है.

पैरामीटर

  • नाम

    string ज़रूरी नहीं है

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

रिटर्न

  • Promise<Alarm | undefined>

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

getAll()

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

इससे सभी अलार्म की एक ऐरे मिलती है.

रिटर्न

  • Promise<Alarm[]>

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

इवेंट

onAlarm

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (alarm: Alarm) => void