আপনি আপনার অ্যাপের প্যারামিটারগুলি সংজ্ঞায়িত করতে এবং ক্লাউডে তাদের মানগুলি আপডেট করতে Firebase Remote Config ব্যবহার করতে পারেন, যাতে আপনি কোনও অ্যাপ আপডেট বিতরণ না করেই আপনার অ্যাপের চেহারা এবং আচরণ পরিবর্তন করতে পারেন।
Remote Config লাইব্রেরি অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মানগুলি সঞ্চয় করতে, Remote Config ব্যাকএন্ড থেকে আপডেট করা প্যারামিটার মানগুলি আনতে এবং আপনার অ্যাপে যখন আনা মানগুলি উপলব্ধ করা হয় তখন নিয়ন্ত্রণ করতে ব্যবহৃত হয়। আরও জানতে, দূরবর্তী কনফিগার লোডিং কৌশল দেখুন।
এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলির মধ্যে দিয়ে হেঁটে যায় এবং কিছু নমুনা কোড প্রদান করে, যার সবকটিই Firebase/quickstart-unity GitHub সংগ্রহস্থল থেকে ক্লোন বা ডাউনলোড করার জন্য উপলব্ধ।
ধাপ 1: আপনার অ্যাপে Remote Config যোগ করুন
আপনি Remote Config ব্যবহার করার আগে, আপনাকে করতে হবে:
আপনার ইউনিটি প্রজেক্ট নিবন্ধন করুন এবং Firebase ব্যবহার করতে কনফিগার করুন।
আপনার ইউনিটি প্রোজেক্ট যদি আগে থেকেই Firebase ব্যবহার করে, তাহলে এটি ইতিমধ্যেই Firebase-এর জন্য নিবন্ধিত এবং কনফিগার করা আছে।
আপনার যদি ইউনিটি প্রজেক্ট না থাকে, আপনি একটি নমুনা অ্যাপ ডাউনলোড করতে পারেন।
আপনার ইউনিটি প্রোজেক্টে Firebase Unity SDK (বিশেষভাবে,
FirebaseRemoteConfig.unitypackage
) যোগ করুন।
মনে রাখবেন যে আপনার ইউনিটি প্রোজেক্টে ফায়ারবেস যোগ করার জন্য Firebase কনসোল এবং আপনার ওপেন ইউনিটি প্রোজেক্ট উভয়েরই কাজ জড়িত থাকে (উদাহরণস্বরূপ, আপনি কনসোল থেকে Firebase কনফিগার ফাইলগুলি ডাউনলোড করেন, তারপর সেগুলিকে আপনার ইউনিটি প্রোজেক্টে নিয়ে যান)।
ধাপ 2: অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সেট করুন
আপনি 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 => {
ধাপ 3: আপনার অ্যাপে ব্যবহার করার জন্য প্যারামিটার মান পান
এখন আপনি Remote Config অবজেক্ট থেকে প্যারামিটার মান পেতে পারেন। আপনি যদি Remote Config ব্যাকএন্ডে মান সেট করেন, সেগুলি আনেন এবং তারপরে সেগুলি সক্রিয় করেন, সেই মানগুলি আপনার অ্যাপে উপলব্ধ। অন্যথায়, আপনি SetDefaultsAsync()
ব্যবহার করে কনফিগার করা অ্যাপ-মধ্যস্থ প্যারামিটার মানগুলি পাবেন।
এই মানগুলি পেতে, GetValue()
ব্যবহার করুন, একটি আর্গুমেন্ট হিসাবে প্যারামিটার কী প্রদান করুন। এটি একটি ConfigValue
প্রদান করে, যার বৈশিষ্ট্য রয়েছে মানটিকে বিভিন্ন বেস প্রকারে রূপান্তর করার জন্য।
ধাপ 4: প্যারামিটার মান সেট করুন
- Firebase কনসোলে , আপনার প্রকল্প খুলুন।
- Remote Config ড্যাশবোর্ড দেখতে মেনু থেকে Remote Config নির্বাচন করুন।
- আপনি আপনার অ্যাপে যে প্যারামিটারগুলি সংজ্ঞায়িত করেছেন তার মতো একই নামের প্যারামিটারগুলিকে সংজ্ঞায়িত করুন৷ প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা শেষ পর্যন্ত অ্যাপ-মধ্যস্থ ডিফল্ট মানকে ওভাররাইড করবে) এবং শর্তাধীন মান। আরও জানতে, Remote Config পরামিতি এবং শর্তাবলী দেখুন।
ধাপ 5: মান আনুন এবং সক্রিয় করুন (প্রয়োজন হিসাবে)
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()
চালু না করা পর্যন্ত উপলব্ধ করা হয় না। এটি আপনাকে নিশ্চিত করতে দেয় যে নতুন মানগুলি গণনার মাঝামাঝি প্রয়োগ করা হয়নি বা অন্য সময়ে যা সমস্যা বা অদ্ভুত আচরণের কারণ হতে পারে।
ধাপ 6: রিয়েল টাইমে আপডেটের জন্য শুনুন
আপনি পরামিতি মান আনার পরে, আপনি Remote Config ব্যাকএন্ড থেকে আপডেট শুনতে রিয়েল-টাইম Remote Config ব্যবহার করতে পারেন। রিয়েল-টাইম Remote Config আপডেটগুলি উপলব্ধ থাকলে সংযুক্ত ডিভাইসগুলিতে সংকেত দেয় এবং আপনি একটি নতুন Remote Config সংস্করণ প্রকাশ করার পরে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি আনয়ন করে৷
রিয়েল-টাইম আপডেটগুলি Android এবং Apple প্ল্যাটফর্মের জন্য Firebase Unity SDK 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 একটি নতুন সংস্করণ প্রকাশ করবেন, যে ডিভাইসগুলি আপনার অ্যাপটি চালাচ্ছে এবং পরিবর্তনগুলি শুনছে সেগুলি সমাপ্তি হ্যান্ডলারকে কল করবে৷
পরবর্তী পদক্ষেপ
যদি আপনি ইতিমধ্যে না থাকেন তবে Remote Config ব্যবহারের কেসগুলি অন্বেষণ করুন এবং কিছু মূল ধারণা এবং উন্নত কৌশল ডকুমেন্টেশন সহ একবার দেখুন:
,আপনি আপনার অ্যাপ্লিকেশনটিতে পরামিতিগুলি সংজ্ঞায়িত করতে এবং ক্লাউডে তাদের মানগুলি আপডেট করতে Firebase Remote Config ব্যবহার করতে পারেন, আপনাকে কোনও অ্যাপ্লিকেশন আপডেট বিতরণ না করে আপনার অ্যাপ্লিকেশনটির উপস্থিতি এবং আচরণ সংশোধন করতে দেয়।
Remote Config লাইব্রেরিটি ইন-অ্যাপ্লিকেশন ডিফল্ট প্যারামিটার মানগুলি সঞ্চয় করতে ব্যবহৃত হয়, Remote Config ব্যাকেন্ড থেকে আপডেট হওয়া প্যারামিটার মানগুলি আনতে এবং যখন আপনার অ্যাপ্লিকেশনটিতে আনার মানগুলি উপলব্ধ করা হয় তখন নিয়ন্ত্রণ করে। আরও জানতে, রিমোট কনফিগারেশন লোডিং কৌশলগুলি দেখুন।
এই গাইডটি আপনাকে শুরু করার পদক্ষেপগুলির মধ্যে দিয়ে চলেছে এবং কিছু নমুনা কোড সরবরাহ করে, যার সবগুলি ফায়ারবেস/কুইকস্টার্ট-ইউনিটি গিটহাব সংগ্রহস্থল থেকে ক্লোন বা ডাউনলোড করার জন্য উপলব্ধ।
পদক্ষেপ 1: আপনার অ্যাপ্লিকেশনটিতে Remote Config যুক্ত করুন
আপনি Remote Config ব্যবহার করার আগে আপনার প্রয়োজন:
আপনার unity ক্য প্রকল্পটি নিবন্ধ করুন এবং ফায়ারবেস ব্যবহার করতে এটি কনফিগার করুন।
যদি আপনার unity ক্য প্রকল্পটি ইতিমধ্যে ফায়ারবেস ব্যবহার করে তবে এটি ইতিমধ্যে নিবন্ধিত এবং ফায়ারবেসের জন্য কনফিগার করা হয়েছে।
আপনার যদি ইউনিটি প্রকল্প না থাকে তবে আপনি একটি নমুনা অ্যাপ্লিকেশন ডাউনলোড করতে পারেন।
আপনার ইউনিটি প্রকল্পে Firebase Unity এসডিকে (বিশেষত,
FirebaseRemoteConfig.unitypackage
) যুক্ত করুন।
নোট করুন যে আপনার unity ক্য প্রকল্পে ফায়ারবেস যুক্ত করার ক্ষেত্রে Firebase কনসোল এবং আপনার ওপেন ইউনিটি প্রকল্পে উভয় কাজ জড়িত (উদাহরণস্বরূপ, আপনি কনসোল থেকে ফায়ারবেস কনফিগার ফাইলগুলি ডাউনলোড করেন, তারপরে সেগুলি আপনার unity ক্য প্রকল্পে নিয়ে যান)।
পদক্ষেপ 2: অ্যাপ্লিকেশন ডিফল্ট প্যারামিটার মান সেট করুন
আপনি 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 => {
পদক্ষেপ 3: আপনার অ্যাপ্লিকেশনটিতে ব্যবহারের জন্য প্যারামিটার মানগুলি পান
এখন আপনি Remote Config অবজেক্ট থেকে প্যারামিটার মান পেতে পারেন। আপনি যদি Remote Config ব্যাকেন্ডে মানগুলি সেট করেন, সেগুলি আনেন এবং তারপরে সেগুলি সক্রিয় করেন তবে সেই মানগুলি আপনার অ্যাপ্লিকেশনটিতে উপলব্ধ। অন্যথায়, আপনি SetDefaultsAsync()
ব্যবহার করে কনফিগার করা ইন-অ্যাপ্লিকেশন প্যারামিটার মানগুলি পান।
এই মানগুলি পেতে, GetValue()
ব্যবহার করুন, একটি যুক্তি হিসাবে প্যারামিটার কী সরবরাহ করে। এটি একটি ConfigValue
ফেরত দেয়, যার মানটি বিভিন্ন বেস প্রকারে রূপান্তর করার জন্য বৈশিষ্ট্য রয়েছে।
পদক্ষেপ 4: প্যারামিটার মান সেট করুন
- Firebase কনসোলে , আপনার প্রকল্পটি খুলুন।
- Select Remote Config from the menu to view the Remote Config dashboard.
- Define parameters with the same names as the parameters that you defined in your app. For each parameter, you can set a default value (which will eventually override the in-app default value) and conditional values. To learn more, see Remote Config parameters and conditions .
Step 5: Fetch and activate values (as needed)
To fetch parameter values from the Remote Config backend, call the FetchAsync()
method. Any values that you set on the backend are fetched and cached in the Remote Config object.
// 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); }
In the code above, FetchComplete
is a method whose signature matches the parameters of one of the overloads of ContinueWithOnMainThread()
.
In the sample code below, the FetchComplete
method is passed the previous task ( fetchTask
), which allows FetchComplete
to determine whether it finished. The code uses Info.LastFetchStatus
to then determine whether the finish was also successful. If so, Remote Config parameter values are then activated using 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}.");
});
}
Values fetched using FetchAsync()
are cached locally when the fetch completes, but are not made available until ActivateAsync()
is invoked. This lets you ensure that the new values are not applied mid-calculation, or at other times that might cause problems or strange behavior.
Step 6: Listen for updates in real time
After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.
Real-time updates are supported by the Firebase Unity SDK v11.0.0+ and higher for Android and Apple platforms.
- In your app, add an
OnConfigUpdateListener
to start listening for updates and automatically fetch any new or updated parameter values. Then, create aConfigUpdateListenerEventHandler
to process update events. The following example listens for updates and uses the newly fetched values to display an updated welcome message.
// 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; }
The next time you publish a new version of your Remote Config , devices that are running your app and listening for changes will call the completion handler.
পরবর্তী পদক্ষেপ
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:
,You can use Firebase Remote Config to define parameters in your app and update their values in the cloud, allowing you to modify the appearance and behavior of your app without distributing an app update.
The Remote Config library is used to store in-app default parameter values, fetch updated parameter values from the Remote Config backend, and control when fetched values are made available to your app. To learn more, see Remote Config loading strategies .
This guide walks you through the steps to get started and provides some sample code, all of which is available to clone or download from the firebase/quickstart-unity GitHub repository.
Step 1: Add Remote Config to your app
Before you can use Remote Config , you need to:
Register your Unity project and configure it to use Firebase.
If your Unity project already uses Firebase, then it's already registered and configured for Firebase.
If you don't have a Unity project, you can download a sample app .
Add the Firebase Unity SDK (specifically,
FirebaseRemoteConfig.unitypackage
) to your Unity project.
Note that adding Firebase to your Unity project involves tasks both in the Firebase console and in your open Unity project (for example, you download Firebase config files from the console, then move them into your Unity project).
Step 2: Set in-app default parameter values
You can set in-app default parameter values in the Remote Config object, so that your app behaves as intended before it connects to the Remote Config backend, and so that default values are available if none are set in the backend.
To do this, create a string dictionary, and populate it with key/value pairs representing the defaults you want to add. If you have already configured Remote Config backend parameter values, you can download a file that contains these key/value pairs and use it to construct your string dictionary. For more information, see Download Remote Config template defaults .
(Non-string properties will be converted to the property's type when SetDefaultsAsync()
is called).
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 => {
Step 3: Get parameter values to use in your app
Now you can get parameter values from the Remote Config object. If you set values in the Remote Config backend, fetched them, and then activated them, those values are available to your app. Otherwise, you get the in-app parameter values configured using SetDefaultsAsync()
.
To get these values, use GetValue()
, providing the parameter key as an argument. This returns a ConfigValue
, which has properties to convert the value into various base types.
Step 4: Set parameter values
- In the Firebase console , open your project.
- Select Remote Config from the menu to view the Remote Config dashboard.
- Define parameters with the same names as the parameters that you defined in your app. For each parameter, you can set a default value (which will eventually override the in-app default value) and conditional values. To learn more, see Remote Config parameters and conditions .
Step 5: Fetch and activate values (as needed)
To fetch parameter values from the Remote Config backend, call the FetchAsync()
method. Any values that you set on the backend are fetched and cached in the Remote Config object.
// 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); }
In the code above, FetchComplete
is a method whose signature matches the parameters of one of the overloads of ContinueWithOnMainThread()
.
In the sample code below, the FetchComplete
method is passed the previous task ( fetchTask
), which allows FetchComplete
to determine whether it finished. The code uses Info.LastFetchStatus
to then determine whether the finish was also successful. If so, Remote Config parameter values are then activated using 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}.");
});
}
Values fetched using FetchAsync()
are cached locally when the fetch completes, but are not made available until ActivateAsync()
is invoked. This lets you ensure that the new values are not applied mid-calculation, or at other times that might cause problems or strange behavior.
Step 6: Listen for updates in real time
After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.
Real-time updates are supported by the Firebase Unity SDK v11.0.0+ and higher for Android and Apple platforms.
- In your app, add an
OnConfigUpdateListener
to start listening for updates and automatically fetch any new or updated parameter values. Then, create aConfigUpdateListenerEventHandler
to process update events. The following example listens for updates and uses the newly fetched values to display an updated welcome message.
// 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; }
The next time you publish a new version of your Remote Config , devices that are running your app and listening for changes will call the completion handler.
পরবর্তী পদক্ষেপ
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: