| প্ল্যাটফর্ম নির্বাচন করুন: | iOS+ অ্যান্ড্রয়েড ওয়েব ফ্লাটার ইউনিটি C++ |
আপনি আপনার অ্যাপে প্যারামিটার নির্ধারণ করতে এবং ক্লাউডে সেগুলোর মান আপডেট করতে Firebase Remote Config ব্যবহার করতে পারেন, যা আপনাকে কোনো অ্যাপ আপডেট বিতরণ না করেই আপনার অ্যাপের চেহারা ও আচরণ পরিবর্তন করার সুযোগ দেয়। এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলো দেখিয়ে দেবে এবং কিছু নমুনা কোডও প্রদান করবে।
ধাপ ১: আপনার অ্যাপে Firebase এবং Remote Config SDK যোগ করুন
যদি আগে থেকে না করে থাকেন, তাহলে Flutter-এর জন্য Firebase SDK-গুলো ইনস্টল ও চালু করুন ।
রিমোট কনফিগের ক্ষেত্রে, ব্যবহারকারীর বৈশিষ্ট্য এবং অডিয়েন্স অনুযায়ী অ্যাপ ইনস্ট্যান্সগুলোকে শর্তসাপেক্ষে টার্গেট করার জন্য গুগল অ্যানালিটিক্স প্রয়োজন। আপনার প্রজেক্টে গুগল অ্যানালিটিক্স সক্রিয় করা আছে কিনা, তা নিশ্চিত করুন।
আপনার ফ্লাটার প্রজেক্টের রুট ডিরেক্টরি থেকে রিমোট কনফিগ প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
flutter pub add firebase_remote_configএছাড়াও, রিমোট কনফিগ সেট আপ করার অংশ হিসেবে, আপনাকে আপনার অ্যাপে গুগল অ্যানালিটিক্সের জন্য ফায়ারবেস এসডিকে (Firebase SDK for Google Analytics) যোগ করতে হবে:
flutter pub add firebase_analyticsআপনার প্রকল্পটি পুনর্গঠন করুন:
flutter runআপনি যদি macOS-এ Remote Config ব্যবহার করেন, তাহলে Xcode-এ Keychain Sharing চালু করুন।
ধাপ ২: রিমোট কনফিগ সিঙ্গেলটন অবজেক্টটি নিন
একটি রিমোট কনফিগ অবজেক্ট ইনস্ট্যান্স নিন এবং ঘন ঘন রিফ্রেশের সুযোগ দিতে ন্যূনতম ফেচ ইন্টারভাল সেট করুন:
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
সিঙ্গেলটন অবজেক্টটি অ্যাপের ভেতরের ডিফল্ট প্যারামিটার মান সংরক্ষণ করতে, ব্যাকএন্ড থেকে আপডেট হওয়া প্যারামিটার মান আনতে এবং আনা মানগুলো কখন আপনার অ্যাপে উপলব্ধ হবে তা নিয়ন্ত্রণ করতে ব্যবহৃত হয়।
ডেভেলপমেন্টের সময়, সর্বনিম্ন ফেচ ইন্টারভাল তুলনামূলকভাবে কম রাখার পরামর্শ দেওয়া হয়। আরও তথ্যের জন্য থ্রটলিং (Throttling) দেখুন।
ধাপ ৩: অ্যাপের মধ্যে ডিফল্ট প্যারামিটার মান সেট করুন
আপনি রিমোট কনফিগ অবজেক্টে অ্যাপের ভেতরের ডিফল্ট প্যারামিটার মান সেট করতে পারেন, যাতে আপনার অ্যাপটি রিমোট কনফিগ ব্যাকএন্ডের সাথে সংযোগ করার আগেই উদ্দেশ্য অনুযায়ী কাজ করে এবং ব্যাকএন্ডে কোনো মান সেট করা না থাকলে ডিফল্ট মানগুলো উপলব্ধ থাকে।
await remoteConfig.setDefaults(const {
"example_param_1": 42,
"example_param_2": 3.14159,
"example_param_3": true,
"example_param_4": "Hello, world!",
});
ধাপ ৪: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটার মানগুলো সংগ্রহ করুন।
এখন আপনি রিমোট কনফিগ অবজেক্ট থেকে প্যারামিটারের মান পেতে পারেন। যদি আপনি ব্যাকএন্ডে মান সেট করেন, সেগুলো ফেচ করেন এবং তারপর অ্যাক্টিভেট করেন, তাহলে সেই মানগুলো আপনার অ্যাপে উপলব্ধ হবে। অন্যথায়, আপনি setDefaults() ব্যবহার করে কনফিগার করা ইন-অ্যাপ প্যারামিটারের মান পাবেন।
এই মানগুলি পেতে, আপনার অ্যাপের প্রত্যাশিত ডেটা টাইপের সাথে মানানসই নিম্নলিখিত যেকোনো মেথডকে কল করুন এবং আর্গুমেন্ট হিসেবে 'key' প্যারামিটারটি প্রদান করুন:
-
getBool() -
getDouble() -
getInt() -
getString()
ধাপ ৫: রিমোট কনফিগ ব্যাকএন্ডে প্যারামিটারের মান সেট করুন।
Firebase কনসোল অথবা Remote Config ব্যাকএন্ড API ব্যবহার করে, আপনি নতুন সার্ভার-সাইড ডিফল্ট ভ্যালু তৈরি করতে পারেন যা আপনার কাঙ্ক্ষিত শর্তাধীন লজিক বা ইউজার টার্গেটিং অনুযায়ী অ্যাপের ভেতরের ভ্যালুগুলোকে ওভাররাইড করবে। এই বিভাগে এই ভ্যালুগুলো তৈরি করার জন্য Firebase কনসোলের ধাপগুলো বর্ণনা করা হয়েছে।
- ফায়ারবেস কনসোলে আপনার প্রজেক্টটি খুলুন।
- রিমোট কনফিগ ড্যাশবোর্ড দেখতে মেনু থেকে রিমোট কনফিগ নির্বাচন করুন।
- আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারগুলোর মতোই একই নামে প্যারামিটার নির্ধারণ করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা অবশেষে অ্যাপের সংশ্লিষ্ট ডিফল্ট মানকে ওভাররাইড করবে), এবং আপনি শর্তসাপেক্ষ মানও সেট করতে পারেন। আরও জানতে, রিমোট কনফিগ প্যারামিটার এবং শর্তাবলী দেখুন।
ধাপ ৬: মানগুলি আনুন এবং সক্রিয় করুন
রিমোট কনফিগ ব্যাকএন্ড থেকে প্যারামিটার ভ্যালুগুলো আনতে,
fetch()মেথডটি কল করুন। আপনি ব্যাকএন্ডে যে ভ্যালুগুলো সেট করেন, সেগুলো ফেচ করে রিমোট কনফিগ অবজেক্টে স্টোর করা হয়।ফেচ করা প্যারামিটার ভ্যালুগুলো আপনার অ্যাপে উপলব্ধ করতে,
activate()মেথডটি কল করুন।যেসব ক্ষেত্রে আপনি একটি কলেই ভ্যালু ফেচ এবং অ্যাক্টিভেট করতে চান, সেসব ক্ষেত্রে আপনি রিমোট কনফিগ ব্যাকএন্ড থেকে ভ্যালু ফেচ করে অ্যাপের জন্য উপলব্ধ করতে একটি
fetchAndActivate()রিকোয়েস্ট ব্যবহার করতে পারেন:await remoteConfig.fetchAndActivate();
যেহেতু এই আপডেট করা প্যারামিটার মানগুলি আপনার অ্যাপের আচরণ এবং চেহারাকে প্রভাবিত করে, তাই ব্যবহারকারীর জন্য একটি মসৃণ অভিজ্ঞতা নিশ্চিত করে এমন সময়ে ফেচ করা মানগুলি সক্রিয় করা উচিত, যেমন পরের বার যখন ব্যবহারকারী আপনার অ্যাপটি খুলবেন। আরও তথ্য এবং উদাহরণের জন্য রিমোট কনফিগ লোডিং কৌশলগুলি দেখুন।
ধাপ ৭: রিয়েল টাইমে আপডেট শুনুন
প্যারামিটার ভ্যালুগুলো ফেচ করার পর, আপনি রিয়েল-টাইম রিমোট কনফিগ ব্যবহার করে রিমোট কনফিগ ব্যাকএন্ড থেকে আপডেটের জন্য অপেক্ষা করতে পারেন। আপডেট উপলব্ধ হলে রিয়েল-টাইম রিমোট কনফিগ সংযুক্ত ডিভাইসগুলোকে সংকেত পাঠায় এবং আপনি রিমোট কনফিগের নতুন সংস্করণ প্রকাশ করার পর স্বয়ংক্রিয়ভাবে পরিবর্তনগুলো ফেচ করে নেয়।
উল্লেখ্য যে, ওয়েবের জন্য রিয়েল-টাইম রিমোট কনফিগ উপলব্ধ নয়।
আপনার অ্যাপে, আপডেটের জন্য শোনা শুরু করতে এবং স্বয়ংক্রিয়ভাবে যেকোনো নতুন প্যারামিটার মান সংগ্রহ করতে
onConfigUpdatedব্যবহার করুন।remoteConfig.onConfigUpdated.listen((event) async { await remoteConfig.activate(); // Use the new config values here. });পরবর্তী বার আপনি যখন আপনার রিমোট কনফিগের নতুন সংস্করণ প্রকাশ করবেন, তখন যে ডিভাইসগুলিতে আপনার অ্যাপটি চলছে এবং পরিবর্তনের জন্য অপেক্ষা করছে, সেগুলি নতুন কনফিগটি সক্রিয় করবে।
থ্রটলিং
যদি কোনো অ্যাপ অল্প সময়ের মধ্যে অনেক বেশিবার ফেচ করে, তাহলে ফেচ কলগুলো থ্রটল করা হবে এবং FirebaseRemoteConfig এর lastFetchStatus প্রপার্টির মান RemoteConfigFetchStatus.throttle হয়ে যাবে।
রিমোট কনফিগের জন্য ডিফল্ট সর্বনিম্ন ফেচ ব্যবধান হলো ১২ ঘণ্টা, যার অর্থ হলো, প্রকৃতপক্ষে কতবার ফেচ কল করা হয়েছে তা নির্বিশেষে, ১২ ঘণ্টার মধ্যে ব্যাকএন্ড থেকে কনফিগ একবারের বেশি ফেচ করা হবে না।
During app development, if you're not using real-time Remote Config (which we recommend), you might want to fetch and activate configs very frequently (many times per hour) to let you rapidly iterate as you develop and test your app. To accommodate rapid iteration on a project with up to 10 developers, you can temporarily set a low minimum fetch interval with setConfigSettings() .
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));