Android SDK में फ़ीचर फ़्लैग
Pushwoosh.getInstance().featureFlags आपके Android ऐप को वे फ़ीचर फ़्लैग देता है जो कंट्रोल पैनल में एप्लिकेशन के लिए कॉन्फ़िगर किए गए हैं। Pushwoosh वर्तमान डिवाइस और उपयोगकर्ता के लिए सर्वर पर फ़्लैग नियमों का मूल्यांकन करता है, और SDK परिणाम लौटाता है: क्या इस डिवाइस के लिए फ़्लैग चालू है और कौन-से प्रॉपर्टी मान लागू होते हैं।
पूर्वापेक्षाएँ
Anchor link to- Pushwoosh Android SDK 6.16.0 या उसके बाद का संस्करण, जिसे Android SDK गाइड में बताए अनुसार इंटीग्रेट किया गया हो। फ़ीचर फ़्लैग मुख्य
com.pushwoosh:pushwooshलाइब्रेरी का हिस्सा हैं, इसलिए आपको कोई और डिपेंडेंसी जोड़ने की ज़रूरत नहीं है। जब तक SDK इनिशियलाइज़ नहीं होता,getnullलौटाता है। - Audience → Feature Flags में बनाया गया कम से कम एक फ़्लैग। आपको उसकी Key और उसकी प्रॉपर्टी की कुंजियाँ और प्रकार चाहिए। कुंजियों का उपयोग ठीक वैसे ही करें जैसे वे वहाँ दिखाई देती हैं, अक्षरों के केस सहित। उदाहरण के लिए,
get("New_Checkout")कोnew_checkoutकुंजी वाला फ़्लैग नहीं मिलता।
फ़्लैग पढ़ें
Anchor link toहमेशा एक डिफ़ॉल्ट मान पास करें। यह तब तक लागू रहता है जब तक SDK के पास डिवाइस के लिए फ़्लैग न हों, और तब भी जब फ़्लैग मौजूद न हो, आर्काइव किया गया हो, या प्लान में फ़ीचर फ़्लैग शामिल न हों।
import com.pushwoosh.Pushwoosh
val flags = Pushwoosh.getInstance().featureFlags
val checkout = flags.get("new_checkout")if (checkout != null && checkout.isEnabled) { showNewCheckout( buttonColor = checkout.getString("button_color", "blue"), maxItems = checkout.getNumber("max_items", 3.0).toInt(), )} else { showOldCheckout()}केवल यह जाँचने के लिए कि फ़्लैग चालू है या नहीं, isEnabled का उपयोग करें:
val isNewCheckout = Pushwoosh.getInstance().featureFlags.isEnabled("new_checkout", false)Java में, Pushwoosh.getInstance().getFeatureFlags() कॉल करें।
फ़्लैग क्या लौटाता है
Anchor link toget(key) एक FeatureFlag ऑब्जेक्ट लौटाता है, या null तब लौटाता है जब SDK के पास अभी डिवाइस के लिए फ़्लैग नहीं हैं या फ़्लैग उत्तर में नहीं है। आर्काइव किया गया फ़्लैग उत्तर में नहीं होता। get केवल संग्रहीत फ़्लैग पढ़ता है और कभी नेटवर्क की प्रतीक्षा नहीं करता। ऑब्जेक्ट में ये फ़ील्ड होते हैं:
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
key | String | फ़्लैग कुंजी। |
isEnabled | Boolean | क्या इस डिवाइस के लिए फ़्लैग चालू है। |
ruleId | String | वह नियम जिसने परिणाम तय किया, उदाहरण के लिए r_1a2b3c4d। जब कोई नियम डिवाइस से मेल नहीं खाता तो default, और जब फ़्लैग किल (kill) किया गया हो तो खाली स्ट्रिंग। |
प्रॉपर्टी के प्रकार से मेल खाने वाले getter से प्रॉपर्टी मान पढ़ें। जब प्रॉपर्टी मौजूद नहीं होती या उसमें किसी अन्य प्रकार का मान होता है, तो हर getter आपका डिफ़ॉल्ट मान लौटाता है। जब फ़्लैग बंद होता है, तो प्रॉपर्टी में कंट्रोल पैनल में सेट किए गए डिफ़ॉल्ट मान होते हैं।
| मेथड | लौटाता है |
|---|---|
getString(property, defaultValue) | String प्रॉपर्टी का मान। |
getNumber(property, defaultValue) | Number प्रॉपर्टी का मान, Double के रूप में। |
getBool(property, defaultValue) | Boolean प्रॉपर्टी का मान। |
getJsonObject(property, defaultValue) | ऑब्जेक्ट रखने वाली JSON प्रॉपर्टी का मान, JSONObject के रूप में। |
getJsonArray(property, defaultValue) | ऐरे रखने वाली JSON प्रॉपर्टी का मान, JSONArray के रूप में। |
जब get(key) null लौटाता है, तो isEnabled(key, defaultValue) defaultValue लौटाता है।
फ़्लैग को अप-टू-डेट रखें
Anchor link toSDK अंतिम उत्तर को डिवाइस पर अधिकतम 24 घंटे तक संग्रहीत करता है। संग्रहीत फ़्लैग केवल उसी User ID के लिए मान्य होते हैं जिसके लिए उनका अनुरोध किया गया था। SDK उन्हें रीफ़्रेश करता है:
- जब सेशन शुरू होता है, यानी जब ऐप पहली बार फ़ोरग्राउंड में आता है या बैकग्राउंड में कम से कम 30 मिनट रहने के बाद।
- जब तक ऐप फ़ोरग्राउंड में रहता है, हर घंटे।
- डिवाइस के पहली बार रजिस्टर होने के बाद।
setUserIdसे User ID बदलने के ठीक बाद। पिछले उपयोगकर्ता के संग्रहीत फ़्लैग हटा दिए जाते हैं, इसलिए नया उपयोगकर्ता उन्हें कभी नहीं देखता।
नए मानों पर प्रतिक्रिया देने के लिए, एक listener रजिस्टर करें। इसे उस रीफ़्रेश के बाद कॉल किया जाता है जिसने किसी फ़्लैग का मान बदला हो:
import com.pushwoosh.featureflags.FeatureFlagsUpdateListener
private val flagsListener = FeatureFlagsUpdateListener { render() }
override fun onStart() { super.onStart() Pushwoosh.getInstance().featureFlags.addUpdateListener(flagsListener)}
override fun onStop() { Pushwoosh.getInstance().featureFlags.removeUpdateListener(flagsListener) super.onStop()}फ़्लैग का अनुरोध स्वयं करने के लिए, उदाहरण के लिए किसी ऐसी कार्रवाई के बाद जो उपयोगकर्ता को किसी अलग सेगमेंट में ले जा सकती है, refresh कॉल करें। जब तक संग्रहीत फ़्लैग मान्य हैं, यह हर 5 मिनट में अधिकतम एक अनुरोध भेजता है और उस अवधि के भीतर संग्रहीत फ़्लैग से उत्तर देता है। callback मुख्य थ्रेड पर चलता है:
Pushwoosh.getInstance().featureFlags.refresh { result -> if (!result.isSuccess) { val status = result.exception?.httpStatus // the stored flags, or your defaults, stay in effect } render()}विफलता पर, result.exception एक FeatureFlagsException होता है। जब अनुरोध को कोई HTTP उत्तर नहीं मिला, तो इसका httpStatus 0 होता है, और जब सर्वर ने उत्तर दिया लेकिन उत्तर का उपयोग नहीं किया जा सका, तो 200 होता है।
यदि Pushwoosh समय पर डिवाइस के सेगमेंट का मिलान नहीं कर पाता, तो वह आंशिक उत्तर लौटाता है। SDK इसे संग्रहीत नहीं करता, और अगला रीफ़्रेश पूरा उत्तर लाता है।
जब कंट्रोल पैनल में किसी फ़्लैग को किल (kill) किया जाता है, तो डिवाइस को अगले रीफ़्रेश पर वह डिफ़ॉल्ट प्रॉपर्टी मानों के साथ बंद मिलता है। जब SDK सर्वर तक नहीं पहुँच पाता, तो वह संग्रहीत फ़्लैग का उपयोग तब तक जारी रखता है जब तक वे 24 घंटे पुराने न हो जाएँ, और उसके बाद आपके डिफ़ॉल्ट मानों का।
इम्प्रेशन लॉग करें
Anchor link toइम्प्रेशन Pushwoosh को बताता है कि उपयोगकर्ता वास्तव में उस कोड तक पहुँचा जिसे फ़्लैग नियंत्रित करता है, ताकि आप फ़ीचर पाने वाले उपयोगकर्ताओं की तुलना उनसे कर सकें जिन्हें फ़ीचर नहीं मिला। logImpression(key) को उसी क्षण कॉल करें जब उपयोगकर्ता फ़ीचर या उसका पुराना संस्करण देखता है, चालू और बंद दोनों ब्रांच के लिए, क्योंकि फ़्लैग बंद वाले उपयोगकर्ता आपका तुलना समूह हैं:
val flags = Pushwoosh.getInstance().featureFlagsval isOn = flags.isEnabled("new_checkout", false)flags.logImpression("new_checkout")if (isOn) { showNewCheckout()} else { showOldCheckout()}SDK इन एट्रिब्यूट के साथ PW_FeatureFlagImpression इवेंट भेजता है:
| एट्रिब्यूट | प्रकार | मान |
|---|---|---|
flag_key | string | फ़्लैग कुंजी। |
rule_id | string | वह नियम जिसने परिणाम तय किया, जैसा ruleId में है। |
enabled | boolean | क्या फ़्लैग चालू था। |
आपको इवेंट पहले से बनाने की ज़रूरत नहीं है, क्योंकि पहला इम्प्रेशन आने पर Pushwoosh इन एट्रिब्यूट के साथ PW_FeatureFlagImpression को Audience → Events में जोड़ देता है। SDK एक सेशन में हर फ़्लैग, नियम और स्थिति के लिए एक इम्प्रेशन भेजता है, और जब कुंजी के लिए कोई फ़्लैग नहीं होता तो कुछ नहीं भेजता।
इम्प्रेशन की मदद से मार्केटर फ़ीचर तक पहुँचे उपयोगकर्ताओं का सेगमेंट भी बना सकते हैं: फ़ीचर फ़्लैग शर्त की फ़ीचर देखा (30 दिन) स्थिति।
मेथड संदर्भ
Anchor link toPushwoosh.getInstance().featureFlags में ये मेथड हैं:
| मेथड | विवरण |
|---|---|
get(key) | कुंजी के लिए FeatureFlag या null लौटाता है। केवल संग्रहीत फ़्लैग पढ़ता है। |
isEnabled(key, defaultValue) | लौटाता है कि फ़्लैग चालू है या नहीं, या फ़्लैग न होने पर defaultValue। |
refresh(callback) | फ़्लैग का अनुरोध करता है, जब तक संग्रहीत फ़्लैग मान्य हैं तब तक हर 5 मिनट में एक बार तक सीमित। callback को विफलता पर FeatureFlagsException के साथ एक Result मिलता है, और callback null हो सकता है। |
addUpdateListener(listener) | हर उस रीफ़्रेश के बाद listener को कॉल करता है जिसने किसी फ़्लैग का मान बदला हो। |
removeUpdateListener(listener) | addUpdateListener से जोड़े गए listener को हटाता है। |
logImpression(key) | फ़्लैग के वर्तमान नियम और स्थिति के लिए PW_FeatureFlagImpression इवेंट भेजता है। |