Web SDK में फ़ीचर फ़्लैग
Pushwoosh.featureFlags आपकी वेबसाइट को वे फ़ीचर फ़्लैग देता है जो कंट्रोल पैनल में एप्लिकेशन के लिए कॉन्फ़िगर किए गए हैं। Pushwoosh वर्तमान डिवाइस और उपयोगकर्ता के लिए सर्वर पर फ़्लैग नियमों का मूल्यांकन करता है, और SDK परिणाम लौटाता है: क्या इस विज़िटर के लिए फ़्लैग चालू है और कौन-से प्रॉपर्टी मान लागू होते हैं।
पूर्वापेक्षाएँ
Anchor link to- Web SDK 3.94.1 या उसके बाद का संस्करण, जिसे Web SDK 3.0 गाइड में बताए अनुसार Pushwoosh CDN से लोड किया गया हो, या
web-push-notificationsnpm पैकेज 3.95.0 या उसके बाद का संस्करण। - Audience → Feature Flags में बनाया गया कम से कम एक फ़्लैग। आपको उसकी Key और उसकी प्रॉपर्टी की कुंजियाँ और प्रकार चाहिए। कुंजियों का उपयोग ठीक वैसे ही करें जैसे वे वहाँ दिखाई देती हैं, अक्षरों के केस सहित। उदाहरण के लिए,
get('New_Checkout')कोnew_checkoutकुंजी वाला फ़्लैग नहीं मिलता।
फ़्लैग पढ़ें
Anchor link toSDK तैयार होने के बाद फ़्लैग पढ़ें। हमेशा एक डिफ़ॉल्ट मान पास करें: यह तब तक लागू रहता है जब तक SDK के पास पेज के लिए फ़्लैग न हों, और तब भी जब फ़्लैग मौजूद न हो, आर्काइव किया गया हो, या प्लान में फ़ीचर फ़्लैग शामिल न हों।
Pushwoosh.push(() => { const flags = Pushwoosh.featureFlags;
const render = () => { const checkout = flags.get('new_checkout'); if (checkout && checkout.enabled) { showNewCheckout({ buttonColor: checkout.getString('button_color', 'blue'), maxItems: checkout.getNumber('max_items', 3), }); } else { showOldCheckout(); } };
render(); flags.addUpdateListener(render);});npm पैकेज के साथ, अपने द्वारा बनाए गए Pushwoosh इंस्टेंस का उपयोग करें:
import { Pushwoosh } from 'web-push-notifications';
const pushwoosh = new Pushwoosh();pushwoosh.push(['init', { applicationCode: 'XXXXX-XXXXX' /* ... */ }]);
pushwoosh.push(() => { const isNewCheckout = pushwoosh.featureFlags.isEnabled('new_checkout', false); // ...});जब तक आपका कोड पहली बार get(), isEnabled(), refresh() या addUpdateListener() को कॉल नहीं करता, तब तक SDK पेज पर कोई फ़्लैग अनुरोध नहीं भेजता, इसलिए जो पेज फ़्लैग का उपयोग नहीं करते वे कोई अतिरिक्त ट्रैफ़िक नहीं भेजते।
फ़्लैग क्या लौटाता है
Anchor link toget(key) एक FeatureFlag ऑब्जेक्ट लौटाता है, या null तब लौटाता है जब SDK के पास अभी पेज के लिए फ़्लैग नहीं हैं या फ़्लैग उत्तर में नहीं है। आर्काइव किया गया फ़्लैग उत्तर में नहीं होता। ऑब्जेक्ट में ये फ़ील्ड होते हैं:
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
key | string | फ़्लैग कुंजी। |
enabled | boolean | क्या इस विज़िटर के लिए फ़्लैग चालू है। |
ruleId | string | वह नियम जिसने परिणाम तय किया, उदाहरण के लिए r_1a2b3c4d। जब कोई नियम विज़िटर से मेल नहीं खाता तो default, और जब फ़्लैग किल (kill) किया गया हो तो खाली स्ट्रिंग। |
प्रॉपर्टी के प्रकार से मेल खाने वाले getter से प्रॉपर्टी मान पढ़ें। जब प्रॉपर्टी मौजूद नहीं होती या उसमें किसी अन्य प्रकार का मान होता है, तो हर getter आपका डिफ़ॉल्ट मान लौटाता है। जब फ़्लैग बंद होता है, तो प्रॉपर्टी में कंट्रोल पैनल में सेट किए गए डिफ़ॉल्ट मान होते हैं।
| मेथड | लौटाता है |
|---|---|
getString(property, defaultValue) | String प्रॉपर्टी का मान। |
getNumber(property, defaultValue) | Number प्रॉपर्टी का मान। |
getBool(property, defaultValue) | Boolean प्रॉपर्टी का मान। |
getJson(property, defaultValue) | JSON प्रॉपर्टी का मान, पार्स किए गए JSON मान के रूप में। |
getProperties() | फ़्लैग के सभी प्रॉपर्टी मानों की एक कॉपी। |
isEnabled(key, defaultValue), get(key)?.enabled का शॉर्टकट है, जो फ़्लैग न होने पर defaultValue लौटाता है।
फ़्लैग को अप-टू-डेट रखें
Anchor link toSDK अंतिम उत्तर को ब्राउज़र के IndexedDB में अधिकतम 24 घंटे तक संग्रहीत करता है। संग्रहीत फ़्लैग केवल उसी User ID के लिए मान्य होते हैं जिसके लिए उनका अनुरोध किया गया था। SDK उन्हें रीफ़्रेश करता है:
- पेज पर पहली बार उपयोग होने पर, जब संग्रहीत फ़्लैग 15 मिनट से पुराने हों या मौजूद न हों;
- जब तक पेज खुला रहता है, हर घंटे;
- डिवाइस के रजिस्टर होने के बाद, जब फ़्लैग का अनुरोध रजिस्ट्रेशन से पहले किया गया था;
- User ID बदलने के ठीक बाद। पिछले उपयोगकर्ता के संग्रहीत फ़्लैग हटा दिए जाते हैं, इसलिए नया उपयोगकर्ता उन्हें कभी नहीं देखता।
नए मानों पर प्रतिक्रिया देने के लिए, एक listener रजिस्टर करें। इसे उस रीफ़्रेश के बाद कॉल किया जाता है जिसने किसी फ़्लैग का मान बदला हो:
const onFlagsChanged = () => render();Pushwoosh.featureFlags.addUpdateListener(onFlagsChanged);// laterPushwoosh.featureFlags.removeUpdateListener(onFlagsChanged);फ़्लैग का अनुरोध स्वयं करने के लिए, उदाहरण के लिए किसी ऐसी कार्रवाई के बाद जो विज़िटर को किसी अलग सेगमेंट में ले जा सकती है, refresh() कॉल करें। जब तक संग्रहीत फ़्लैग मान्य हैं, यह हर 5 मिनट में अधिकतम एक अनुरोध भेजता है और उस अवधि के भीतर तुरंत रिज़ॉल्व हो जाता है। अनुरोध विफल होने पर promise रिजेक्ट हो जाता है, और संग्रहीत फ़्लैग उपयोग में बने रहते हैं।
try { await Pushwoosh.featureFlags.refresh();} catch (error) { // the stored flags, or your defaults, stay in effect}render();यदि Pushwoosh समय पर विज़िटर के सेगमेंट का मिलान नहीं कर पाता, तो वह आंशिक उत्तर लौटाता है। SDK इसका उपयोग केवल वर्तमान पेज पर करता है, केवल तब जब उसके पास कोई मान्य संग्रहीत फ़्लैग न हों, और इसे कभी संग्रहीत नहीं करता। अगला रीफ़्रेश पूरा उत्तर लाता है।
जब कंट्रोल पैनल में किसी फ़्लैग को किल (kill) किया जाता है, तो विज़िटर को अगले रीफ़्रेश पर वह डिफ़ॉल्ट प्रॉपर्टी मानों के साथ बंद मिलता है। जब SDK सर्वर तक नहीं पहुँच पाता, तो वह संग्रहीत फ़्लैग का उपयोग तब तक जारी रखता है जब तक वे 24 घंटे पुराने न हो जाएँ, और उसके बाद आपके डिफ़ॉल्ट मानों का।
इम्प्रेशन लॉग करें
Anchor link toइम्प्रेशन Pushwoosh को बताता है कि विज़िटर वास्तव में उस कोड तक पहुँचा जिसे फ़्लैग नियंत्रित करता है, ताकि आप उन विज़िटर की तुलना उनसे कर सकें जिन्हें फ़ीचर नहीं मिला। logImpression(key) को उसी क्षण कॉल करें जब विज़िटर फ़ीचर या उसका पुराना संस्करण देखता है, चालू और बंद दोनों ब्रांच के लिए, क्योंकि फ़्लैग बंद वाले विज़िटर आपका तुलना समूह हैं:
const checkout = Pushwoosh.featureFlags.get('new_checkout');if (checkout) { Pushwoosh.featureFlags.logImpression('new_checkout');}SDK इन एट्रिब्यूट के साथ PW_FeatureFlagImpression इवेंट भेजता है:
| एट्रिब्यूट | प्रकार | मान |
|---|---|---|
flag_key | string | फ़्लैग कुंजी। |
rule_id | string | वह नियम जिसने परिणाम तय किया, जैसा ruleId में है। |
enabled | boolean | क्या फ़्लैग चालू था। |
आपको इवेंट पहले से बनाने की ज़रूरत नहीं है, क्योंकि पहला इम्प्रेशन आने पर Pushwoosh इन एट्रिब्यूट के साथ PW_FeatureFlagImpression को Audience → Events में जोड़ देता है। SDK एक पेज पर हर फ़्लैग, नियम और स्थिति के लिए एक इम्प्रेशन भेजता है, और 30 मिनट तक उसी ब्राउज़र के अन्य टैब से आने वाली पुनरावृत्तियों को छोड़ देता है। logImpression() कभी रिजेक्ट नहीं होता, और जब कुंजी के लिए कोई फ़्लैग नहीं होता तो कुछ नहीं भेजता।
इम्प्रेशन की मदद से मार्केटर उन विज़िटर का सेगमेंट भी बना सकते हैं जो फ़ीचर तक पहुँचे: फ़ीचर फ़्लैग कंडीशन की फ़ीचर देखा (30 दिन) स्थिति।
मेथड संदर्भ
Anchor link toPushwoosh.featureFlags में ये मेथड हैं:
| मेथड | विवरण |
|---|---|
get(key) | कुंजी के लिए FeatureFlag या null लौटाता है। केवल संग्रहीत फ़्लैग पढ़ता है और कभी नेटवर्क की प्रतीक्षा नहीं करता। |
isEnabled(key, defaultValue) | लौटाता है कि फ़्लैग चालू है या नहीं, या फ़्लैग न होने पर defaultValue। |
refresh() | फ़्लैग का अनुरोध करता है, जब तक संग्रहीत फ़्लैग मान्य हैं तब तक हर 5 मिनट में एक बार तक सीमित। एक promise लौटाता है। |
addUpdateListener(listener) | हर उस रीफ़्रेश के बाद listener को कॉल करता है जिसने किसी फ़्लैग का मान बदला हो। |
removeUpdateListener(listener) | addUpdateListener से जोड़े गए listener को हटाता है। |
logImpression(key) | फ़्लैग के वर्तमान नियम और स्थिति के लिए PW_FeatureFlagImpression इवेंट भेजता है। एक promise लौटाता है। |