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