বিষয়বস্তুতে যান

Android SDK-এ ফিচার ফ্ল্যাগ

Pushwoosh.getInstance().featureFlags আপনার Android অ্যাপকে সেই ফিচার ফ্ল্যাগগুলো দেয়, যেগুলো কন্ট্রোল প্যানেলে অ্যাপ্লিকেশনের জন্য কনফিগার করা হয়েছে। Pushwoosh বর্তমান ডিভাইস এবং ব্যবহারকারীর জন্য সার্ভারে ফ্ল্যাগের নিয়মগুলো মূল্যায়ন করে, এবং SDK ফলাফল ফেরত দেয়: এই ডিভাইসের জন্য ফ্ল্যাগটি চালু আছে কি না এবং কোন প্রপার্টি মানগুলো প্রযোজ্য।

পূর্বশর্ত

Anchor link to
  • Pushwoosh Android SDK 6.16.0 বা তার পরের সংস্করণ, যা Android SDK গাইডে বর্ণিত পদ্ধতিতে ইন্টিগ্রেট করা হয়েছে। ফিচার ফ্ল্যাগ মূল com.pushwoosh:pushwoosh লাইব্রেরির অংশ, তাই আপনাকে অন্য কোনো ডিপেন্ডেন্সি যোগ করতে হবে না। SDK ইনিশিয়ালাইজ না হওয়া পর্যন্ত get null ফেরত দেয়।
  • 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 to

get(key) একটি FeatureFlag অবজেক্ট ফেরত দেয়, অথবা null ফেরত দেয় যখন SDK-এর কাছে এখনও ডিভাইসের জন্য ফ্ল্যাগ নেই বা ফ্ল্যাগটি উত্তরে নেই। আর্কাইভ করা ফ্ল্যাগ উত্তরে থাকে না। get শুধুমাত্র সংরক্ষিত ফ্ল্যাগগুলো পড়ে এবং কখনো নেটওয়ার্কের জন্য অপেক্ষা করে না। অবজেক্টটিতে এই ফিল্ডগুলো রয়েছে:

ফিল্ডটাইপবিবরণ
keyStringফ্ল্যাগের কী।
isEnabledBooleanএই ডিভাইসের জন্য ফ্ল্যাগটি চালু আছে কি না।
ruleIdStringযে নিয়মটি ফলাফল নির্ধারণ করেছে, উদাহরণস্বরূপ 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 to

SDK সর্বশেষ উত্তরটি ডিভাইসে সর্বোচ্চ 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().featureFlags
val isOn = flags.isEnabled("new_checkout", false)
flags.logImpression("new_checkout")
if (isOn) {
showNewCheckout()
} else {
showOldCheckout()
}

SDK এই অ্যাট্রিবিউটগুলো সহ PW_FeatureFlagImpression ইভেন্ট পাঠায়:

অ্যাট্রিবিউটটাইপমান
flag_keystringফ্ল্যাগের কী।
rule_idstringযে নিয়মটি ফলাফল নির্ধারণ করেছে, ruleId-এর মতো।
enabledbooleanফ্ল্যাগটি চালু ছিল কি না।

আপনাকে আগে থেকে ইভেন্টটি তৈরি করতে হবে না, কারণ প্রথম ইম্প্রেশন আসার পরে Pushwoosh এই অ্যাট্রিবিউটগুলো সহ PW_FeatureFlagImpression-কে Audience → Events-এ যোগ করে। SDK একটি সেশনে প্রতিটি ফ্ল্যাগ, নিয়ম এবং অবস্থার জন্য একটি করে ইম্প্রেশন পাঠায়, এবং কী-এর জন্য কোনো ফ্ল্যাগ না থাকলে কিছুই পাঠায় না।

ইম্প্রেশনের মাধ্যমে মার্কেটাররা ফিচারে পৌঁছানো ব্যবহারকারীদের একটি সেগমেন্টও তৈরি করতে পারেন: ফিচার ফ্ল্যাগ শর্তের ফিচারটি দেখেছে (৩০ দিন) অবস্থা।

মেথড রেফারেন্স

Anchor link to

Pushwoosh.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 ইভেন্ট পাঠায়।