আপনি Firebase Remote Config ব্যবহার করে আপনার অ্যাপের প্যারামিটারগুলি সংজ্ঞায়িত করতে পারেন এবং ক্লাউডে তাদের মান আপডেট করতে পারেন, যার ফলে আপনি অ্যাপ আপডেট বিতরণ না করেই আপনার অ্যাপের চেহারা এবং আচরণ পরিবর্তন করতে পারবেন। এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলি সম্পর্কে জানায় এবং কিছু নমুনা কোড প্রদান করে, যার সবকটিই firebase/quickstart-android GitHub সংগ্রহস্থল থেকে ক্লোন বা ডাউনলোড করার জন্য উপলব্ধ।
ধাপ ১: আপনার অ্যাপে Firebase এবং Remote Config SDK যোগ করুন
যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে Firebase যোগ করুন ।
Remote Config জন্য, ব্যবহারকারীর বৈশিষ্ট্য এবং দর্শকদের কাছে অ্যাপের উদাহরণের শর্তসাপেক্ষ লক্ষ্যবস্তু করার জন্য Google Analytics প্রয়োজন। আপনার প্রকল্পে Google Analytics সক্ষম করুন ।
আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত
<project>/<app-module>/build.gradle.kts
অথবা<project>/<app-module>/build.gradle
), Android এর জন্য Remote Config লাইব্রেরির জন্য নির্ভরতা যোগ করুন। লাইব্রেরি সংস্করণ নিয়ন্ত্রণ করতে আমরা Firebase Android BoM ব্যবহার করার পরামর্শ দিই।এছাড়াও, Analytics সেট আপ করার অংশ হিসেবে, আপনার অ্যাপে Google Analytics এর জন্য Firebase SDK যোগ করতে হবে।
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.4.0")) // Add the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config") implementation("com.google.firebase:firebase-analytics") }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সর্বদা Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করেই Firebase লাইব্রেরি নির্ভরতা যোগ করুন
যদি আপনি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করেন, তাহলে আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করার জন্য BoM ব্যবহার করার পরামর্শ দিচ্ছি, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config:23.0.1") implementation("com.google.firebase:firebase-analytics:23.0.0") }
ধাপ ২: Remote Config সিঙ্গেলটন অবজেক্টটি পান
একটি Remote Config অবজেক্ট ইনস্ট্যান্স পান এবং ঘন ঘন রিফ্রেশ করার জন্য সর্বনিম্ন ফেচ ইন্টারভাল সেট করুন:
Kotlin
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
সিঙ্গেলটন অবজেক্টটি অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সংরক্ষণ করতে, ব্যাকএন্ড থেকে আপডেট করা প্যারামিটার মান আনতে এবং আপনার অ্যাপে কখন আনা মানগুলি উপলব্ধ করা হবে তা নিয়ন্ত্রণ করতে ব্যবহৃত হয়।
ডেভেলপমেন্টের সময়, তুলনামূলকভাবে কম ন্যূনতম ফেচ ইন্টারভাল সেট করার পরামর্শ দেওয়া হয়। আরও তথ্যের জন্য থ্রটলিং দেখুন।
ধাপ ৩: অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সেট করুন
আপনি Remote Config অবজেক্টে ইন-অ্যাপ ডিফল্ট প্যারামিটার মান সেট করতে পারেন, যাতে আপনার অ্যাপটি Remote Config ব্যাকএন্ডের সাথে সংযোগ স্থাপনের আগে যেমনটি ইচ্ছা তেমন আচরণ করে এবং ব্যাকএন্ডে কোনওটি সেট না করা থাকলে ডিফল্ট মানগুলি উপলব্ধ থাকে।
আপনার অ্যাপের
res/xml
ফোল্ডারে সংরক্ষিত একটি ম্যাপ অবজেক্ট অথবা XML রিসোর্স ফাইল ব্যবহার করে প্যারামিটারের নাম এবং ডিফল্ট প্যারামিটার মান নির্ধারণ করুন। Remote Config কুইকস্টার্ট নমুনা অ্যাপটি ডিফল্ট প্যারামিটারের নাম এবং মান নির্ধারণ করতে একটি XML ফাইল ব্যবহার করে।যদি আপনি ইতিমধ্যেই Remote Config ব্যাকএন্ড প্যারামিটার মান কনফিগার করে থাকেন, তাহলে আপনি একটি জেনারেটেড XML ফাইল ডাউনলোড করতে পারেন যাতে সমস্ত ডিফল্ট মান অন্তর্ভুক্ত থাকে এবং এটি আপনার অ্যাপের
res/xml
ডিরেক্টরিতে সংরক্ষণ করতে পারেন:বিশ্রাম
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
আপনি গুগল ক্লাউড সিএলআই অথবা ক্লাউড শেল ব্যবহার করে নিম্নলিখিত কমান্ডটি চালিয়ে একটি বিয়ারার টোকেন তৈরি করতে পারেন:
gcloud auth print-access-token
এই টোকেনটি স্বল্পস্থায়ী, তাই যদি আপনি একটি প্রমাণীকরণ ত্রুটি পান তবে আপনাকে এটি পুনরায় তৈরি করতে হতে পারে।
Firebase কনসোল
প্যারামিটার ট্যাবে, মেনু খুলুন এবং ডিফল্ট মান ডাউনলোড করুন নির্বাচন করুন।
অনুরোধ করা হলে, Android এর জন্য .xml সক্ষম করুন, তারপর ফাইল ডাউনলোড করুন এ ক্লিক করুন।
setDefaultsAsync(int)
ব্যবহার করে Remote Config অবজেক্টে এই মানগুলি যোগ করুন, যেমন দেখানো হয়েছে:Kotlin
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
ধাপ ৪: আপনার অ্যাপে ব্যবহারের জন্য প্যারামিটার মান পান
এখন আপনি Remote Config অবজেক্ট থেকে প্যারামিটার মান পেতে পারেন। যদি আপনি ব্যাকএন্ডে মান সেট করেন, সেগুলি আনেন এবং তারপর সক্রিয় করেন, তাহলে সেই মানগুলি আপনার অ্যাপে উপলব্ধ হবে। অন্যথায়, আপনি setDefaultsAsync(int)
ব্যবহার করে কনফিগার করা ইন-অ্যাপ প্যারামিটার মান পাবেন। এই মানগুলি পেতে, নীচে তালিকাভুক্ত পদ্ধতিটি কল করুন যা আপনার অ্যাপ দ্বারা প্রত্যাশিত ডেটা টাইপের সাথে ম্যাপ করে, একটি আর্গুমেন্ট হিসাবে প্যারামিটার কী প্রদান করে:
ধাপ ৫: Remote Config ব্যাকএন্ডে প্যারামিটার মান সেট করুন
Firebase কনসোল বা Remote Config ব্যাকএন্ড API ব্যবহার করে, আপনি নতুন সার্ভার-সাইড ডিফল্ট মান তৈরি করতে পারেন যা আপনার পছন্দসই শর্তাধীন লজিক বা ব্যবহারকারীর টার্গেটিং অনুসারে ইন-অ্যাপ মানগুলিকে ওভাররাইড করে। এই বিভাগটি Firebase কনসোল তৈরির পদক্ষেপগুলি বর্ণনা করে।
- Firebase কনসোলে , আপনার প্রকল্পটি খুলুন।
- Remote Config ড্যাশবোর্ড দেখতে মেনু থেকে Remote Config নির্বাচন করুন।
- আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারের নামের সাথে একই নামের প্যারামিটারগুলি সংজ্ঞায়িত করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা অবশেষে সংশ্লিষ্ট ইন-অ্যাপ ডিফল্ট মানকে ওভাররাইড করবে), এবং আপনি শর্তাধীন মানগুলিও সেট করতে পারেন। আরও জানতে, Remote Config প্যারামিটার এবং শর্তাবলী দেখুন।
যদি আপনি কাস্টম সিগন্যাল কন্ডিশন ব্যবহার করেন, তাহলে অ্যাট্রিবিউট এবং তাদের মান নির্ধারণ করুন। নিম্নলিখিত উদাহরণগুলি দেখায় কিভাবে একটি কাস্টম সিগন্যাল কন্ডিশন সংজ্ঞায়িত করতে হয়।
Kotlin
val customSignals = customSignals { put("city", "Tokyo") put("preferred_event_category", "sports") } remoteConfig.setCustomSignals(customSignals)
Java
CustomSignals customSignals = new CustomSignals.Builder() .put("city", "Tokyo") .put("preferred_event_category", "sports") .build(); mFirebaseRemoteConfig.setCustomSignals(customSignals);
ধাপ ৬: মানগুলি আনুন এবং সক্রিয় করুন
- Remote Config ব্যাকএন্ড থেকে প্যারামিটার মান আনতে,
fetch()
পদ্ধতিটি কল করুন। ব্যাকএন্ডে আপনার সেট করা যেকোনো মান Remote Config অবজেক্টে আনা এবং সংরক্ষণ করা হয়। আপনার অ্যাপে আনা প্যারামিটার মানগুলি উপলব্ধ করতে,
activate()
পদ্ধতিটি কল করুন।যেসব ক্ষেত্রে আপনি এক কলে মান আনতে এবং সক্রিয় করতে চান, সেসব ক্ষেত্রে আপনি Remote Config ব্যাকএন্ড থেকে মান আনতে এবং অ্যাপে উপলব্ধ করতে
fetchAndActivate()
অনুরোধ ব্যবহার করতে পারেন:Kotlin
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText( this, "Fetch and activate succeeded", Toast.LENGTH_SHORT, ).show() } else { Toast.makeText( this, "Fetch failed", Toast.LENGTH_SHORT, ).show() } displayWelcomeMessage() }
Java
mFirebaseRemoteConfig.fetchAndActivate() .addOnCompleteListener(this, new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { if (task.isSuccessful()) { boolean updated = task.getResult(); Log.d(TAG, "Config params updated: " + updated); Toast.makeText(MainActivity.this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Fetch failed", Toast.LENGTH_SHORT).show(); } displayWelcomeMessage(); } });
যেহেতু এই আপডেট করা প্যারামিটার মানগুলি আপনার অ্যাপের আচরণ এবং চেহারাকে প্রভাবিত করে, তাই আপনার ব্যবহারকারীর জন্য একটি মসৃণ অভিজ্ঞতা নিশ্চিত করার জন্য আপনার ফেচ করা মানগুলি এমন সময়ে সক্রিয় করা উচিত, যেমন পরবর্তী সময় যখন ব্যবহারকারী আপনার অ্যাপটি খুলবে। আরও তথ্য এবং উদাহরণের জন্য রিমোট কনফিগার লোডিং কৌশলগুলি দেখুন।
ধাপ ৭: রিয়েল টাইমে আপডেট শুনুন
প্যারামিটার মান আনার পর, আপনি Remote Config ব্যাকএন্ড থেকে আপডেট শুনতে রিয়েল-টাইম Remote Config ব্যবহার করতে পারেন। আপডেট পাওয়া গেলে রিয়েল-টাইম Remote Config সংযুক্ত ডিভাইসগুলিতে সংকেত পাঠায় এবং একটি নতুন Remote Config সংস্করণ প্রকাশ করার পরে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি আনে।
রিয়েল-টাইম আপডেটগুলি Android v21.3.0+ ( Firebase BoM v31.2.4+) এর জন্য Firebase SDK দ্বারা সমর্থিত।
আপনার অ্যাপে, আপডেট শোনা শুরু করতে এবং স্বয়ংক্রিয়ভাবে যেকোনো নতুন প্যারামিটার মান আনতে
addOnConfigUpdateListener()
ব্যবহার করুন। আপডেট করা কনফিগারেশন সক্রিয় করতেonUpdate()
কলব্যাক বাস্তবায়ন করুন।Kotlin
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys); if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })
Java
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() { @Override public void onUpdate(ConfigUpdate configUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys()); mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { displayWelcomeMessage(); } }); } @Override public void onError(FirebaseRemoteConfigException error) { Log.w(TAG, "Config update error with code: " + error.getCode(), error); } });
পরের বার যখন আপনি আপনার Remote Config এর একটি নতুন সংস্করণ প্রকাশ করবেন, তখন যেসব ডিভাইস আপনার অ্যাপটি চালাচ্ছে এবং পরিবর্তনগুলি শুনছে তারা
ConfigUpdateListener
কল করবে।
থ্রটলিং
যদি কোনও অ্যাপ অল্প সময়ের মধ্যে অনেকবার ফেচ করে, তাহলে ফেচ কল থ্রোটল করা হয় এবং SDK FirebaseRemoteConfigFetchThrottledException
ফেরত দেয়। SDK সংস্করণ 17.0.0 এর আগে, 60 মিনিটের উইন্ডোতে 5টি ফেচ অনুরোধের সীমা ছিল (নতুন সংস্করণগুলিতে আরও অনুমতিমূলক সীমা রয়েছে)।
অ্যাপ ডেভেলপমেন্টের সময়, আপনি কনফিগারেশনগুলি খুব ঘন ঘন (প্রতি ঘন্টায় অনেকবার) আনতে এবং সক্রিয় করতে চাইতে পারেন যাতে আপনি আপনার অ্যাপটি ডেভেলপ এবং পরীক্ষা করার সময় দ্রুত পুনরাবৃত্তি করতে পারেন। সার্ভারে কনফিগারেশন আপডেট করা হলে রিয়েল-টাইম Remote Config আপডেটগুলি স্বয়ংক্রিয়ভাবে ক্যাশে বাইপাস করে। 10 জন পর্যন্ত ডেভেলপার সহ একটি প্রকল্পে দ্রুত পুনরাবৃত্তি সামঞ্জস্য করার জন্য, আপনি আপনার অ্যাপে অস্থায়ীভাবে একটি FirebaseRemoteConfigSettings
অবজেক্ট সেট করতে পারেন যার সর্বনিম্ন ফেচ ইন্টারভাল ( setMinimumFetchIntervalInSeconds
) থাকে।
Remote Config জন্য ডিফল্ট সর্বনিম্ন ফেচ ইন্টারভাল হল ১২ ঘন্টা, যার অর্থ হল ১২ ঘন্টার উইন্ডোতে ব্যাকএন্ড থেকে কনফিগারেশনগুলি একাধিকবার আনা হবে না, আসলে কতগুলি ফেচ কল করা হোক না কেন। বিশেষ করে, সর্বনিম্ন ফেচ ইন্টারভাল নিম্নলিখিত ক্রমে নির্ধারিত হয়:
-
fetch(long)
এর প্যারামিটার -
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
এর প্যারামিটার - ১২ ঘন্টার ডিফল্ট মান
ন্যূনতম ফেচ ইন্টারভালকে একটি কাস্টম মানে সেট করতে, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
ব্যবহার করুন।
Next steps
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: