अपने ऐप्लिकेशन में पैरामीटर तय करने और क्लाउड में उनकी वैल्यू अपडेट करने के लिए, Firebase Remote Config का इस्तेमाल किया जा सकता है. इससे, ऐप्लिकेशन का अपडेट डिस्ट्रिब्यूट किए बिना ही, ऐप्लिकेशन के लुक और काम करने के तरीके में बदलाव किया जा सकता है.
Remote Config लाइब्रेरी का इस्तेमाल, इन-ऐप्लिकेशन डिफ़ॉल्ट पैरामीटर वैल्यू सेव करने के लिए किया जाता है. साथ ही, इसका इस्तेमाल Remote Config बैकएंड से अपडेट की गई पैरामीटर वैल्यू फ़ेच करने के लिए किया जाता है. इसके अलावा, यह लाइब्रेरी यह कंट्रोल करती है कि फ़ेच की गई वैल्यू आपके ऐप्लिकेशन के लिए कब उपलब्ध कराई जाएं. ज़्यादा जानने के लिए, रिमोट कॉन्फ़िगरेशन लोड करने की रणनीतियां देखें.
इस गाइड में, शुरू करने के तरीके के बारे में बताया गया है. साथ ही, इसमें कुछ सैंपल कोड भी दिए गए हैं. इन सभी को firebase/quickstart-unity GitHub रिपॉजिटरी से क्लोन या डाउनलोड किया जा सकता है.
पहला चरण: अपने ऐप्लिकेशन में Remote Config जोड़ना
Remote Config का इस्तेमाल करने से पहले, आपको ये काम करने होंगे:
अपने यूनिटी प्रोजेक्ट को रजिस्टर करें और Firebase का इस्तेमाल करने के लिए इसे कॉन्फ़िगर करें.
अगर आपके Unity प्रोजेक्ट में पहले से ही Firebase का इस्तेमाल किया जा रहा है, तो यह Firebase के लिए पहले से ही रजिस्टर और कॉन्फ़िगर किया गया है.
अगर आपके पास Unity प्रोजेक्ट नहीं है, तो सैंपल ऐप्लिकेशन डाउनलोड करें.
अपने Unity प्रोजेक्ट में Firebase Unity SDK (खास तौर पर,
FirebaseRemoteConfig.unitypackage
) जोड़ें.
ध्यान दें कि Firebase को अपने यूनिटी प्रोजेक्ट में जोड़ने के लिए, आपको Firebase कंसोल और खुले हुए यूनिटी प्रोजेक्ट, दोनों में टास्क पूरे करने होंगे. उदाहरण के लिए, आपको कंसोल से 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()
का इस्तेमाल करें. इसके लिए, पैरामीटर की को आर्ग्युमेंट के तौर पर दें. इससे 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 के नए वर्शन को पब्लिश करने के बाद, बदलावों को अपने-आप फ़ेच करता है.
रीयल-टाइम अपडेट की सुविधा, 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 इस्तेमाल के उदाहरण देखें. साथ ही, कुछ मुख्य कॉन्सेप्ट और बेहतर रणनीतियों से जुड़े दस्तावेज़ देखें. इनमें ये शामिल हैं: