पुश मैसेज एपीआई की मदद से, हम उपयोगकर्ता को तब भी सूचनाएं भेज पाते हैं, जब ब्राउज़र बंद है. कई डेवलपर इस मैसेज सेवा का इस्तेमाल इन कामों के लिए करना चाहते हैं कॉन्टेंट को बिना ब्राउज़र खोले अपडेट और सिंक करते हैं, लेकिन एपीआई को एक महत्वपूर्ण प्रतिबंध: आपको हमेशा प्रत्येक एक पुश मैसेज मिला.
उपयोगकर्ता के डिवाइस पर डेटा को सिंक करने या छिपाने के लिए पुश मैसेज भेजने की सुविधा आपने पहले जो सूचना दिखाई है वह उपयोगकर्ताओं के लिए बहुत काम की हो सकती है और डेवलपर को अनुमति दी जा सकती है, लेकिन किसी वेब ऐप्लिकेशन को उपयोगकर्ता के बिना बैकग्राउंड में काम करने की अनुमति दी जा सकती है जिसमें हमारे साथ बुरा बर्ताव किया जाता है.
बजट एपीआई, एक नया एपीआई है जिसे डेवलपर को बैकग्राउंड में सीमित काम करने की सुविधा देने के लिए डिज़ाइन किया गया है उपयोगकर्ता को सूचित किए बिना, जैसे कि साइलेंट पुश या बैकग्राउंड फ़ेच करें. Chrome 60 और उसके बाद के वर्शन में, इस एपीआई और Chrome टीम, डेवलपर से सुझाव लेने के लिए उत्सुक है.
डेवलपर को बैकग्राउंड में उपयोगकर्ता के संसाधनों का इस्तेमाल करने की अनुमति देने के लिए, वेब यह प्लैटफ़ॉर्म, नए बजट एपीआई की मदद से बजट का सिद्धांत पेश कर रहा है. हर लोगों की दिलचस्पी के आधार पर, साइट को संसाधन का एक हिस्सा दिया जाएगा. बैकग्राउंड में की जाने वाली कार्रवाइयों के लिए इस्तेमाल किया जा सकता है. जैसे कि साइलेंट पुश, जिसमें हर कार्रवाई के लिए बजट खत्म हो जाएगा. जब बजट खर्च हो जाता है, तो उपयोगकर्ता के बिना बैकग्राउंड से जुड़ी कार्रवाइयां नहीं की जा सकतीं किसको दिखे. उपयोगकर्ता एजेंट, बजट तय करने के लिए ज़िम्मेदार होगा किसी वेब ऐप्लिकेशन को उसके अनुभव के आधार पर असाइन किया गया हो. उदाहरण के लिए, बजट की तय की गई सीमा को उपयोगकर्ता के जुड़ाव से जोड़ा जा सकता है. हर ब्राउज़र अपनी खुद की एक अनुभव राय बना सकता है.
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया बजट एपीआई की मदद से, आपको बजट रिज़र्व करने, बजट का इस्तेमाल करने, और सूची पाने की सुविधा मिलती है बचे हुए बजट का इस्तेमाल किया जा सकता है. साथ ही, बैकग्राउंड में होने वाली कार्रवाइयों की लागत को समझा जा सकता है
बजट रिज़र्व किया जा रहा है
Chrome 60 और उसके बाद के वर्शन में, navigator.budget.reserve()
तरीका उपलब्ध होगा
बिना किसी फ़्लैग के.
reserve()
तरीके की मदद से, किसी खास कार्रवाई के लिए बजट का अनुरोध किया जा सकता है और
इससे एक बूलियन वैल्यू दिखेगी, जिससे पता चलेगा कि बजट को रिज़र्व किया जा सकता है या नहीं. अगर आपने
बजट रिज़र्व था, तो उपयोगकर्ता को अपने बैकग्राउंड के बारे में बताने की कोई ज़रूरत नहीं है
काम.
पुश नोटिफ़िकेशन के उदाहरण में, आप
"साइलेंट-पुश" कार्रवाई होती है और अगर reserve()
सही पर रिज़ॉल्व हो जाता है, तो यह कार्रवाई होगी
अनुमति है. ऐसा न करने पर, जवाब गलत दिखेगा और आपको कोई सूचना दिखानी होगी
self.addEventListener('push', event => {
const promiseChain = navigator.budget.reserve('silent-push')
.then((reserved) => {
if (reserved) {
// No need to show a notification.
return;
}
// Not enough budget is available, must show a notification.
return registration.showNotification(...);
});
event.waitUntil(promiseChain);
});
Chrome 60 में, 'साइलेंट-पुश' सिर्फ़ वह ऑपरेशन टाइप है जो उपलब्ध है, लेकिन अगर आपको किसी निर्देश में मौजूद ऑपरेशन टाइप की पूरी सूची. साथ ही, टेस्टिंग या डीबग करने के लिए अपना बजट बढ़ाने का कोई आसान तरीका भी नहीं है एक बार उपयोग कर लिया जाता है, लेकिन अस्थायी समाधान के रूप में आप नया Chrome में प्रोफ़ाइल बनाएं. अफ़सोस की बात यह है कि आप इसके लिए बजट के तौर पर गुप्त मोड का इस्तेमाल नहीं कर सकते गुप्त मोड में एपीआई, शून्य का बजट दिखाएगा (हालांकि, ऐसा बग जिसकी वजह से कोई गड़बड़ी होती है मेरी टेस्टिंग के दौरान).
आपको reserve()
को सिर्फ़ तब कॉल करना चाहिए, जब आपको काम करना हो
आने वाले समय में बुक करने की सुविधा मिलती है. ध्यान दें कि अगर आपने
ऊपर उदाहरण के रूप में लेकिन फिर भी एक नोटिफ़िकेशन दिखाई दे रहा है, तब भी बजट का उपयोग किया जाएगा.
इस्तेमाल का एक ऐसा सामान्य उदाहरण जिसे सिर्फ़ reserve()
ने चालू नहीं किया है, वह है
बैकएंड से कोई साइलेंट पुश शेड्यूल करें. बजट एपीआई में एपीआई चालू करने के लिए
लेकिन उन पर अब भी Chrome में काम चल रहा है.
यह सुविधा सिर्फ़ फ़्लैग और / या ऑरिजिन ट्रायल के लिए उपलब्ध है.
बजट एपीआई और ऑरिजिन ट्रायल
कोई वेब ऐप्लिकेशन दो तरीकों से इस्तेमाल कर सकता है, getBudget()
और getCost()
तय किया जा सकता है कि उनके बजट का इस्तेमाल कहां किया जा सकता है.
Chrome 60 में, अगर ऑरिजिन ट्रायल के लिए साइन अप किया जाता है, तो ये दोनों तरीके उपलब्ध होंगे नहीं तो जांच के लिए आप प्रयोगात्मक वेब प्लेटफ़ॉर्म सुविधाएं फ़्लैग (इसमें chrome://flags/#enable-experimental-web-platform-features खोलें Chrome).
आइए, देखते हैं कि इन एपीआई को इस्तेमाल कैसे किया जाता है.
अपना बजट पाएं
getBudget()
तरीके की मदद से, उपलब्ध बजट की जानकारी देखी जा सकती है. कुछ ब्राउज़र
(जैसे कि Chrome) का बजट 'क्षय' होगा इसलिए, आपको समय के साथ पूरी तरह से
विज़िबिलिटी से यह BudgetStates
की कलेक्शन दिखाता है, जो बताता है कि आपका बजट कितना है
आने वाले समय में कई बार होंगी.
हमारे ज़रिए चलाए जा सकने वाले बजट की एंट्री की सूची बनाने के लिए:
navigator.budget.getBudget()
.then((budgets) => {
budgets.forEach((element) => {
console.log(\`At '${new Date(element.time).toString()}' \` +
\`your budget will be '${element.budgetAt}'.\`);
});
});
पहली एंट्री में आपका मौजूदा बजट होगा और कुछ अन्य वैल्यू भी दिखेंगी भविष्य में अलग-अलग समय पर आपका बजट कितना होगा.
At 'Mon Jun 05 2017 12:47:20' you will have a budget of '3'.
At 'Fri Jun 09 2017 10:42:57' you will have a budget of '2'.
At 'Fri Jun 09 2017 12:31:09' you will have a budget of '1'.
आने वाले समय में, बजट के लिए अनुमतियों को शामिल करने का एक फ़ायदा यह भी है कि डेवलपर ये काम कर सकते हैं: इस जानकारी को उनके बैकएंड के साथ शेयर किया जा सकता है, ताकि सर्वर साइड के व्यवहार को उसके हिसाब से बदला जा सके (यानी, क्लाइंट के पास बजट होने पर ही अपडेट ट्रिगर करने के लिए पुश मैसेज भेजें करने के लिए बेहतरीन विकल्प है.
ऑपरेशन की लागत जानें
ऑपरेशन की कीमत जानने के लिए, getCost()
को कॉल करने पर
यदि आप कॉल करते है तो बजट की अधिकतम राशि दर्शाती है
उस कार्रवाई के लिए reserve()
.
उदाहरण के लिए, हम यह पता लगा सकते हैं कि जब आप एक पुश मैसेज (जैसे, एक साइलेंट पुश की कीमत) मिल सकता है. इस बारे में नीचे बताया गया है कोड:
navigator.budget.getCost('silent-push')
.then((cost) => {
console.log('Cost of silent push is:', cost);
})
.catch((err) => {
console.error('Unable to get cost:', err);
});
लिखने के समय, Chrome 60 यह प्रिंट करेगा:
Cost of silent push is: 2
reserve()
और getCost()
तरीकों के साथ खास बात यह है कि
किसी कार्रवाई की असल लागत, getCost()
से वापस मिलने वाली लागत से कम हो सकती है.
मौजूदा बजट कम होने पर भी, बुकिंग की जा सकती है
बताई गई लागत से ज़्यादा हो. स्पेसिफ़िकेशन में दी गई खास जानकारी यहां दी गई है
फ़ॉलो करता है:
यही वजह है कि Chrome का मौजूदा एपीआई और वेब, एपीआई के नए जिनमें बैकग्राउंड में काम करने की ज़रूरत होती है, जैसे बैकग्राउंड फ़ेच, बजट एपीआई का इस्तेमाल इन कामों के लिए किया जा सकता है उपयोगकर्ता को सूचित किए बिना की जा सकने वाली कार्रवाइयों को मैनेज करें.
एपीआई का इस्तेमाल करते समय, कृपया GitHub रेपो पर सुझाव दें या crbug.com पर Chrome बग की शिकायत करें.