ब्यौरा
chrome.alarms API का इस्तेमाल करके, कोड को समय-समय पर या भविष्य में किसी तय समय पर चलाने के लिए शेड्यूल किया जा सकता है.
अनुमतियां
alarmschrome.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 और इसके बाद के वर्शन
रिटर्न
-
Promise<Alarm[]>
Chrome 91 और इसके बाद के वर्शन