ब्यौरा
कोड को समय-समय पर या आने वाले समय में किसी तय समय पर चलाने के लिए, chrome.alarms
API का इस्तेमाल करें.
अनुमतियां
alarms
chrome.alarms
एपीआई का इस्तेमाल करने के लिए, manifest में "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-samples रिपॉज़िटरी से Alarm API का उदाहरण इंस्टॉल करें.
अलार्म सेट करो
यहां दिए गए उदाहरण में, एक्सटेंशन इंस्टॉल होने पर सेवा वर्कर में अलार्म सेट किया गया है:
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
number ज़रूरी नहीं
अगर यह वैल्यू शून्य नहीं है, तो इसका मतलब है कि अलार्म दोहराया जाएगा और
periodInMinutes
मिनट में फिर से बजेगा. -
scheduledTime
संख्या
वह समय जब इस अलार्म को ट्रिगर करने के लिए शेड्यूल किया गया था. यह समय, इकोसिस्टम के शुरू होने के बाद के मिलीसेकंड में दिया जाता है (जैसे,
Date.now() + n
). परफ़ॉर्मेंस की वजह से, हो सकता है कि अलार्म को ट्रिगर होने में तय समय से ज़्यादा समय लगे.
AlarmCreateInfo
प्रॉपर्टी
-
delayInMinutes
number ज़रूरी नहीं
onAlarm
इवेंट ट्रिगर होने में लगने वाला समय, मिनट में. -
periodInMinutes
number ज़रूरी नहीं
अगर सेट किया गया है, तो
when
याdelayInMinutes
से तय किए गए शुरुआती इवेंट के बाद, हरperiodInMinutes
मिनट में onAlarm इवेंट ट्रिगर होना चाहिए. अगर यह सेट नहीं किया गया है, तो अलार्म सिर्फ़ एक बार बजेगा. -
कब
number ज़रूरी नहीं
वह समय जब अलार्म बजना चाहिए. यह समय, युग के बाद के मिलीसेकंड में होता है (उदाहरण के लिए,
Date.now() + n
).
तरीके
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
)
दिए गए नाम वाला अलार्म बंद कर देता है.
पैरामीटर
-
नाम
स्ट्रिंग ज़रूरी नहीं
जिस अलार्म को बंद करना है उसका नाम. डिफ़ॉल्ट रूप से, यह खाली स्ट्रिंग होती है.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(wasCleared: boolean) => void
-
wasCleared
बूलियन
-
रिटर्न
-
Promise<boolean>
Chrome 91 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
clearAll()
chrome.alarms.clearAll(
callback?: function,
)
सभी अलार्म हटा देता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(wasCleared: boolean) => void
-
wasCleared
बूलियन
-
रिटर्न
-
Promise<boolean>
Chrome 91 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
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 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
get()
chrome.alarms.get(
name?: string,
callback?: function,
)
किसी खास अलार्म के बारे में जानकारी दिखाता है.
पैरामीटर
रिटर्न
-
Promise<Alarm | undefined>
Chrome 91 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
getAll()
chrome.alarms.getAll(
callback?: function,
)
सभी अलार्म का कलेक्शन दिखाता है.
पैरामीटर
रिटर्न
-
Promise<Alarm[]>
Chrome 91 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.