| প্ল্যাটফর্ম নির্বাচন করুন: | iOS+ অ্যান্ড্রয়েড ওয়েব ফ্লাটার ইউনিটি C++ |
আপনি Firebase Remote Config ব্যবহার করে আপনার অ্যাপে প্যারামিটার নির্ধারণ করতে এবং ক্লাউডে সেগুলোর মান আপডেট করতে পারেন, যা আপনাকে কোনো অ্যাপ আপডেট বিতরণ না করেই আপনার অ্যাপের চেহারা ও আচরণ পরিবর্তন করার সুযোগ দেয়।
Remote Config লাইব্রেরিটি অ্যাপের ভেতরের ডিফল্ট প্যারামিটার ভ্যালু সংরক্ষণ করতে, Remote Config ব্যাকএন্ড থেকে আপডেট হওয়া প্যারামিটার ভ্যালু ফেচ করতে এবং ফেচ করা ভ্যালুগুলো কখন আপনার অ্যাপে উপলব্ধ হবে তা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। আরও জানতে, রিমোট কনফিগ লোডিং স্ট্র্যাটেজিস দেখুন।
এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলো দেখিয়ে দেবে এবং কিছু নমুনা কোডও প্রদান করবে, যেগুলোর সবই firebase/quickstart-unity গিটহাব রিপোজিটরি থেকে ক্লোন বা ডাউনলোড করা যাবে।
ধাপ ১: আপনার অ্যাপে Remote Config যোগ করুন
Remote Config ব্যবহার করার আগে, আপনাকে যা করতে হবে তা হলো:
আপনার ইউনিটি প্রজেক্টটি রেজিস্টার করুন এবং ফায়ারবেস ব্যবহারের জন্য কনফিগার করুন।
আপনার ইউনিটি প্রজেক্টে যদি আগে থেকেই ফায়ারবেস ব্যবহার করা হয়, তাহলে এটি ফায়ারবেসের জন্য ইতোমধ্যেই নিবন্ধিত এবং কনফিগার করা আছে।
আপনার যদি কোনো ইউনিটি প্রজেক্ট না থাকে, তাহলে আপনি একটি স্যাম্পল অ্যাপ ডাউনলোড করতে পারেন।
আপনার ইউনিটি প্রজেক্টে Firebase Unity এসডিকে (বিশেষত,
FirebaseRemoteConfig.unitypackage) যোগ করুন।
মনে রাখবেন যে, আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করার জন্য Firebase কনসোল এবং আপনার খোলা ইউনিটি প্রজেক্ট উভয় স্থানেই কাজ করতে হয় (উদাহরণস্বরূপ, আপনাকে কনসোল থেকে ফায়ারবেস কনফিগারেশন ফাইল ডাউনলোড করতে হবে, তারপর সেগুলোকে আপনার ইউনিটি প্রজেক্টে স্থানান্তর করতে হবে)।
ধাপ ২: অ্যাপের মধ্যে ডিফল্ট প্যারামিটার মান সেট করুন
আপনি 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() ফাংশন ব্যবহার করুন এবং আর্গুমেন্ট হিসেবে `key` প্যারামিটারটি দিন। এটি একটি ` ConfigValue রিটার্ন করে, যেটিতে মানটিকে বিভিন্ন বেস টাইপে রূপান্তর করার জন্য প্রোপার্টি রয়েছে।
ধাপ ৪: প্যারামিটারের মান নির্ধারণ করুন
- Firebase কনসোলে আপনার প্রজেক্টটি খুলুন।
- Remote Config ড্যাশবোর্ড দেখতে মেনু থেকে Remote Config নির্বাচন করুন।
- আপনার অ্যাপে সংজ্ঞায়িত প্যারামিটারগুলোর মতোই একই নামে প্যারামিটার নির্ধারণ করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান (যা অবশেষে অ্যাপের ডিফল্ট মানকে ওভাররাইড করবে) এবং শর্তসাপেক্ষ মান সেট করতে পারেন। আরও জানতে, 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 ব্যবহার করে নির্ধারণ করে যে সমাপ্তিটিও সফল হয়েছে কিনা। যদি তা হয়ে থাকে, তাহলে ActivateAsync() ব্যবহার করে Remote Config প্যারামিটারের মানগুলো সক্রিয় করা হয়।
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 এসডিকে v11.0.0+ এবং এর উচ্চতর সংস্করণ রিয়েল-টাইম আপডেট সমর্থন করে।
- আপনার অ্যাপে, আপডেট শোনা শুরু করতে এবং স্বয়ংক্রিয়ভাবে যেকোনো নতুন বা আপডেট হওয়া প্যারামিটার ভ্যালু ফেচ করার জন্য একটি
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 -এর কোনো নতুন সংস্করণ প্রকাশ করবেন, তখন যে ডিভাইসগুলিতে আপনার অ্যাপটি চলছে এবং পরিবর্তনের জন্য অপেক্ষা করছে, সেগুলি কমপ্লিশন হ্যান্ডলারকে কল করবে।