आप अपने ऐप में मापदंडों को परिभाषित करने और क्लाउड में उनके मूल्यों को अपडेट करने के लिए Firebase Remote Config का उपयोग कर सकते हैं, जिससे आप ऐप अपडेट को वितरित किए बिना अपने ऐप के स्वरूप और व्यवहार को संशोधित कर सकते हैं।
Remote Config लाइब्रेरी का उपयोग इन-ऐप डिफ़ॉल्ट पैरामीटर मानों को संग्रहीत करने के लिए किया जाता है, Remote Config बैकएंड से अपडेट किए गए पैरामीटर मानों को प्राप्त करें, और आपके ऐप पर प्राप्त किए गए मानों को उपलब्ध कराने पर नियंत्रण करें। अधिक जानने के लिए, रिमोट कॉन्फिग लोडिंग रणनीतियों को देखें।
यह गाइड आपको आरंभ करने के चरणों के माध्यम से चलता है और कुछ नमूना कोड प्रदान करता है, जो सभी फायरबेस / क्विकस्टार्ट-यूनिटी गिटहब रिपॉजिटरी से क्लोन या डाउनलोड करने के लिए उपलब्ध है।
चरण 1: अपने ऐप में रिमोट कॉन्फिग जोड़ें
इससे पहले कि आप Remote Config का उपयोग कर सकें, आपको निम्न की आवश्यकता है:
अपनी एकता परियोजना को पंजीकृत करें और इसे फायरबेस का उपयोग करने के लिए कॉन्फ़िगर करें।
यदि आपकी एकता परियोजना पहले से ही फायरबेस का उपयोग करती है, तो यह पहले से पंजीकृत है और फायरबेस के लिए कॉन्फ़िगर किया गया है।
यदि आपके पास यूनिटी प्रोजेक्ट नहीं है, तो आप एक नमूना ऐप डाउनलोड कर सकते हैं।
अपने यूनिटी प्रोजेक्ट में Firebase Unity SDK (विशेष रूप से,
FirebaseRemoteConfig.unitypackage
) जोड़ें।
ध्यान दें कि आपके यूनिटी प्रोजेक्ट में फायरबेस को जोड़ने में फायरबेस कंसोल और आपके ओपन यूनिटी प्रोजेक्ट दोनों में कार्य शामिल हैं (उदाहरण के लिए, आप कंसोल से फायरबेस कॉन्फिग फाइल डाउनलोड करते हैं, फिर उन्हें अपने यूनिटी प्रोजेक्ट में ले जाते हैं)।
चरण 2: इन-ऐप डिफ़ॉल्ट पैरामीटर मान सेट करें
आप 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 कंसोल में, अपने ऐप को अपने Firebase प्रोजेक्ट में जोड़ें।
चरण 5: पैरामीटर मान सेट करें
- Firebase कंसोल में, अपना प्रोजेक्ट खोलें।
- Remote Config डैशबोर्ड देखने के लिए मेनू से Remote Config चुनें।
- पैरामीटर को उन्हीं नामों से परिभाषित करें जिन्हें आपने अपने ऐप में परिभाषित किया था। प्रत्येक पैरामीटर के लिए, आप एक डिफ़ॉल्ट मान सेट कर सकते हैं (जो अंततः इन-ऐप डिफ़ॉल्ट मान को ओवरराइड कर देगा) और सशर्त मान। अधिक जानने के लिए, रिमोट कॉन्फ़िगरेशन पैरामीटर और शर्तें देखें।
चरण 6: मान प्राप्त करें और सक्रिय करें (आवश्यकतानुसार)
Remote Config बैकएंड से पैरामीटर मान प्राप्त करने के लिए, [ FetchAsync()
] [fetch] विधि को कॉल करें। आपके द्वारा बैकएंड पर सेट किया गया कोई भी मान 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()
] [fetch] के माध्यम से प्राप्त किए गए मान स्थानीय रूप से कैश किए जाते हैं जब फ़ेच पूरा हो जाता है, लेकिन ActivateAsync()
लागू होने तक उपलब्ध नहीं कराया जाता है। यह आपको यह सुनिश्चित करने में सक्षम बनाता है कि नए मान मध्य-गणना में लागू नहीं किए जाते हैं, या अन्य समय जो समस्या या अजीब व्यवहार का कारण हो सकते हैं।
चरण 7: वास्तविक समय में अद्यतनों के लिए सुनें
पैरामीटर मान लाने के बाद, आप 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 का एक नया संस्करण प्रकाशित करते हैं, तो डिवाइस जो आपके ऐप को चला रहे हैं और परिवर्तनों को सुन रहे हैं, पूर्णता हैंडलर को कॉल करेंगे।
Next steps
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: