| প্ল্যাটফর্ম বেছে নিন: | iOS+ Android ওয়েব Flutter Unity C++ |
আপনি Firebase Remote Config ব্যবহার করে অ্যাপে প্যারামিটার নির্ধারণ করতে এবং ক্লাউডে সেগুলির ভ্যালু আপডেট করতে পারবেন। এর ফলে, অ্যাপ আপডেট ডিস্ট্রিবিউট না করেই অ্যাপের চেহারা ও ব্যবহারবিধি পরিবর্তন করতে পারবেন।
Remote Config লাইব্রেরি অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার ভ্যালু সেভ করতে, Remote Config ব্যাকএন্ড থেকে আপডেট করা প্যারামিটার ভ্যালু ফেচ করতে এবং ফেচ করা ভ্যালু কখন আপনার অ্যাপে উপলভ্য করা হবে তা কন্ট্রোল করতে ব্যবহার করা হয়। আরও জানতে, রিমোট কনফিগ লোডিং স্ট্র্যাটেজি দেখুন।
এই গাইড আপনাকে শুরু করার ধাপগুলি দেখায় এবং কিছু নমুনা কোড প্রদান করে, যার সবগুলিই firebase/quickstart-unity GitHub রিপোজিটরি থেকে ক্লোন বা ডাউনলোড করা যায়।
ধাপ ১: আপনার অ্যাপে Remote Config যোগ করুন
আপনি Remote Config ব্যবহার করার আগে, আপনাকে এগুলি করতে হবে:
Firebase ব্যবহার করার জন্য আপনার Unity প্রোজেক্ট রেজিস্টার ও কনফিগার করুন।
আপনার Unity প্রোজেক্টে আগে থেকেই Firebase ব্যবহার করা হলে, এটি আগে থেকেই Firebase-এর জন্য রেজিস্টার ও কনফিগার করা আছে।
আপনার কাছে Unity প্রোজেক্ট না থাকলে, আপনি একটি স্যাম্পেল অ্যাপ ডাউনলোড করতে পারবেন।
আপনার Unity প্রোজেক্টে Firebase Unity SDK (বিশেষ করে,
FirebaseRemoteConfig.unitypackage) যোগ করুন।
মনে রাখবেন, আপনার Unity প্রোজেক্টে Firebase যোগ করার জন্য Firebase কনসোল এবং আপনার খোলা Unity প্রোজেক্ট, দুটি জায়গাতেই কাজ করতে হয় (যেমন, আপনি কনসোল থেকে Firebase কনফিগারেশন ফাইল ডাউনলোড করেন, তারপর সেগুলি আপনার Unity প্রোজেক্টে সরান)।
ধাপ ২: ইন-অ্যাপ ডিফল্ট প্যারামিটার ভ্যালু সেট করা
আপনি Remote Config অবজেক্টে ইন-অ্যাপ ডিফল্ট প্যারামিটার ভ্যালু সেট করতে পারবেন, যাতে আপনার অ্যাপ Remote Config ব্যাক-এন্ডের সাথে কানেক্ট করার আগে এটি যেভাবে কাজ করার কথা সেভাবেই কাজ করে এবং ব্যাক-এন্ডে কোনও ভ্যালু সেট করা না থাকলে যাতে ডিফল্ট ভ্যালু উপলভ্য থাকে।
এটি করতে, একটি স্ট্রিং অভিধান তৈরি করুন এবং আপনি যোগ করতে চান এমন ডিফল্ট মান প্রতিনিধিত্বকারী কী-ভ্যালু পেয়ার দিয়ে এটি পূরণ করুন। আপনি যদি আগে থেকেই Remote Config ব্যাকএন্ড প্যারামিটার ভ্যালু কনফিগার করে থাকেন, তাহলে আপনি এমন একটি ফাইল ডাউনলোড করতে পারবেন যা এইসব কী-ভ্যালু পেয়ার কন্টেন করে এবং আপনার স্ট্রিং ডিকশনারি তৈরি করতে এটি ব্যবহার করতে পারবেন। আরও তথ্যের জন্য, ডাউনলোড Remote Config টেমপ্লেট ডিফল্ট দেখুন।
(SetDefaultsAsync() কল করা হলে, নন-স্ট্রিং প্রপার্টিকে প্রপার্টির ধরনে কনভার্ট করা হবে)।
System.Collections.Generic.Dictionary<string, object> defaults = new System.Collections.Generic.Dictionary<string, object>(); // These are the values that are used if we haven't fetched data from the // server // yet, or if we ask for values that the server doesn't have: defaults.Add("config_test_string", "default local string"); defaults.Add("config_test_int", 1); defaults.Add("config_test_float", 1.0); defaults.Add("config_test_bool", false); Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults) .ContinueWithOnMainThread(task => {
ধাপ ৩: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটারের মান পান
এখন আপনি Remote Config অবজেক্ট থেকে প্যারামিটারের ভ্যালু পেতে পারেন। আপনি Remote Config ব্যাকএন্ডে
ভ্যালু সেট করলে, সেগুলি ফেচ করলে এবং তারপরে সেগুলি অ্যাক্টিভেট করলে,
সেইসব ভ্যালু আপনার অ্যাপের জন্য উপলভ্য হয়। অন্যথায়, আপনি
SetDefaultsAsync() ব্যবহার করে কনফিগার করা অ্যাপ-মধ্যস্থ প্যারামিটার
ভ্যালু পাবেন।
এইসব ভ্যালু পেতে, আর্গুমেন্ট হিসেবে প্যারামিটার কী প্রদান করে
GetValue(),
ব্যবহার করুন। এর ফলে
ConfigValue,
রিটার্ন করা হয়, যার মধ্যে বিভিন্ন বেস টাইপে ভ্যালু কনভার্ট করার প্রপার্টি থাকে।
ধাপ ৪: প্যারামিটার ভ্যালু সেট করুন
Firebase কনসোলে, DevOps ও এনগেজমেন্ট > রিমোট কনফিগ বিকল্পে যান।
আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারের মতো একই নামের প্যারামিটার সংজ্ঞায়িত করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা শেষ পর্যন্ত ইন-অ্যাপ ডিফল্ট মানকে ওভাররাইড করবে) এবং শর্তসাপেক্ষ মান। আরও জানতে, Remote Config প্যারামিটার ও শর্তাবলী দেখুন।
ধাপ ৫: ভ্যালু নিয়ে আসা ও অ্যাক্টিভেট করা (প্রয়োজন অনুযায়ী)
Remote Config ব্যাকএন্ড থেকে প্যারামিটার ভ্যালু ফেচ করতে, FetchAsync()
মেথড কল করুন। আপনি ব্যাকএন্ডে যে মান সেট করেন তা
Remote Config অবজেক্টে ফেচ ও ক্যাশে করা হয়।
// Start a fetch request. // FetchAsync only fetches new data if the current data is older than the provided // timespan. Otherwise it assumes the data is "recent enough", and does nothing. // By default the timespan is 12 hours, and for production apps, this is a good // number. For this example though, it's set to a timespan of zero, so that // changes in the console will always show up immediately. public Task FetchDataAsync() { DebugLog("Fetching data..."); System.Threading.Tasks.Task fetchTask = Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync( TimeSpan.Zero); return fetchTask.ContinueWithOnMainThread(FetchComplete); }
আগের কোডে, FetchComplete হল এমন একটি পদ্ধতি যার সিগনেচার ContinueWithOnMainThread()-এর
ওভারলোডের
একটি
প্যারামিটারের সাথে মেলে।
নিচে দেওয়া নমুনা কোডে, FetchComplete মেথডকে আগের টাস্ক (fetchTask) পাস করা হয়েছে, যা FetchComplete-কে নির্ধারণ করতে দেয় যে
এটি সম্পূর্ণ হয়েছে কিনা। কোডটি
Info.LastFetchStatus
ব্যবহার করে, এর পরে এটি নির্ধারণ করে যে কাজটি এছাড়াও সফলভাবে সম্পন্ন হয়েছে কিনা। যদি তাই হয়,
Remote Config প্যারামিটার ভ্যালু ActivateAsync() ব্যবহার করে অ্যাক্টিভেট করা হয়।
private void FetchComplete(Task fetchTask) {
if (!fetchTask.IsCompleted) {
Debug.LogError("Retrieval hasn't finished.");
return;
}
var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var info = remoteConfig.Info;
if(info.LastFetchStatus != LastFetchStatus.Success) {
Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
return;
}
// Fetch successful. Parameter values must be activated to use.
remoteConfig.ActivateAsync()
.ContinueWithOnMainThread(
task => {
Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
});
}
FetchAsync()
ব্যবহার করে পাওয়া ভ্যালু, ফেচ করা সম্পূর্ণ হলে লোকালি ক্যাশে করা হয়, কিন্তু
ActivateAsync()
ইনভোক না করা পর্যন্ত উপলভ্য করা হয় না। এর ফলে আপনি নিশ্চিত হতে পারবেন যে নতুন ভ্যালু গণনা
চলাকালীন বা অন্য কোনও সময়ে প্রয়োগ করা হয়নি, কারণ এর ফলে সমস্যা বা অদ্ভুত
আচরণ হতে পারে।
ধাপ ৬: রিয়েল-টাইমে আপডেট শুনুন
প্যারামিটার ভ্যালু ফেচ করার পরে, আপনি রিয়েল-টাইম Remote Config ব্যবহার করে Remote Config ব্যাকএন্ড থেকে আপডেট শুনতে পারবেন। আপডেট উপলভ্য হলে কানেক্ট করা ডিভাইসে রিয়েল-টাইম Remote Config সিগন্যাল পাঠায় এবং আপনি নতুন Remote Config ভার্সন প্রকাশ করার পরে অটোমেটিক পরিবর্তনগুলি ফেচ করে।
রিয়েল-টাইম আপডেট Firebase Unity SDK v11.0.0+ এবং এর পরবর্তী যেকোনও ভার্সনে কাজ করে। এটি Android এবং Apple প্ল্যাটফর্মের জন্য উপলভ্য।
- আপনার অ্যাপে, আপডেট শোনা শুরু করতে একটি
OnConfigUpdateListenerযোগ করুন এবং অটোমেটিক কোনও নতুন বা আপডেট করা প্যারামিটার ভ্যালু ফেচ করুন। তারপরে, আপডেট ইভেন্ট প্রসেস করার জন্যConfigUpdateListenerEventHandlerতৈরি করুন। নিচের উদাহরণটি আপডেট শোনার জন্য ব্যবহার করা হয় এবং একটি আপডেট করা স্বাগত মেসেজ দেখানোর জন্য নতুন করে ফেচ করা ভ্যালু ব্যবহার করে।
// Invoke the listener. void Start() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener += ConfigUpdateListenerEventHandler; } // Handle real-time Remote Config events. void ConfigUpdateListenerEventHandler( object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) { if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) { Debug.Log(String.Format("Error occurred while listening: {0}", args.Error)); return; } Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys)); // Activate all fetched values and then display a welcome message. remoteConfig.ActivateAsync().ContinueWithOnMainThread( task => { DisplayWelcomeMessage(); }); } // Stop the listener. void OnDestroy() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener -= ConfigUpdateListenerEventHandler; }
পরের বার আপনি Remote Config-এর নতুন ভার্সন প্রকাশ করলে, যেসব ডিভাইস আপনার অ্যাপ রান করছে এবং পরিবর্তন শোনার জন্য অপেক্ষা করছে সেগুলি কমপ্লিশন হ্যান্ডলারকে কল করবে।