chrome.alarms

ब्यौरा

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

अनुमतियां

alarms

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

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

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

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

डिवाइस स्लीप

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

परसिस्टेंस

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

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

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

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

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

checkAlarmState();

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

उदाहरण

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

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

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

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

    number optional

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

  • persistAcrossSessions

    बूलियन

    मंज़ूरी मिलना बाकी है

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

  • scheduledTime

    संख्या

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

AlarmCreateInfo

प्रॉपर्टी

  • delayInMinutes

    number optional

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

  • periodInMinutes

    number optional

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

  • persistAcrossSessions

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

    मंज़ूरी मिलना बाकी है

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

  • कब

    number optional

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

तरीके

clear()

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

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

पैरामीटर

  • नाम

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

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

रिटर्न

  • 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 सेकंड तक नहीं बजेगा.

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

पैरामीटर

  • नाम

    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