फायरबेस रिमोट कॉन्फ़िगरेशन के साथ आरंभ करें


आप अपने ऐप में पैरामीटर्स को परिभाषित करने और क्लाउड में उनके मानों को अपडेट करने के लिए फायरबेस रिमोट कॉन्फिग का उपयोग कर सकते हैं, जिससे आप ऐप अपडेट वितरित किए बिना अपने ऐप की उपस्थिति और व्यवहार को संशोधित कर सकते हैं।

रिमोट कॉन्फिग लाइब्रेरी का उपयोग इन-ऐप डिफ़ॉल्ट पैरामीटर मानों को संग्रहीत करने, रिमोट कॉन्फिग बैकएंड से अद्यतन पैरामीटर मान लाने और आपके ऐप पर लाए गए मान उपलब्ध कराए जाने पर नियंत्रण करने के लिए किया जाता है। अधिक जानने के लिए, रिमोट कॉन्फिग लोडिंग रणनीतियाँ देखें।

यह मार्गदर्शिका आपको आरंभ करने के चरणों के बारे में बताती है और कुछ नमूना कोड प्रदान करती है, जो सभी फ़ायरबेस/क्विकस्टार्ट-यूनिटी गिटहब रिपॉजिटरी से क्लोन या डाउनलोड करने के लिए उपलब्ध हैं।

चरण 1: अपने ऐप में रिमोट कॉन्फ़िगरेशन जोड़ें

इससे पहले कि आप रिमोट कॉन्फिग का उपयोग कर सकें, आपको यह करना होगा:

  • अपना यूनिटी प्रोजेक्ट पंजीकृत करें और इसे फायरबेस का उपयोग करने के लिए कॉन्फ़िगर करें।

    • यदि आपका यूनिटी प्रोजेक्ट पहले से ही फायरबेस का उपयोग करता है, तो यह पहले से ही फायरबेस के लिए पंजीकृत और कॉन्फ़िगर किया गया है।

    • यदि आपके पास यूनिटी प्रोजेक्ट नहीं है, तो आप एक नमूना ऐप डाउनलोड कर सकते हैं।

  • अपने यूनिटी प्रोजेक्ट में Firebase Unity SDK (विशेष रूप से, FirebaseRemoteConfig.unitypackage ) जोड़ें।

ध्यान दें कि आपके यूनिटी प्रोजेक्ट में फायरबेस जोड़ने से फायरबेस कंसोल और आपके ओपन यूनिटी प्रोजेक्ट दोनों में कार्य शामिल होते हैं (उदाहरण के लिए, आप कंसोल से फायरबेस कॉन्फिग फाइल डाउनलोड करते हैं, फिर उन्हें अपने यूनिटी प्रोजेक्ट में ले जाते हैं)।

चरण 2: इन-ऐप डिफ़ॉल्ट पैरामीटर मान सेट करें

आप रिमोट कॉन्फिग ऑब्जेक्ट में इन-ऐप डिफ़ॉल्ट पैरामीटर मान सेट कर सकते हैं, ताकि आपका ऐप रिमोट कॉन्फिग बैकएंड से कनेक्ट होने से पहले इच्छित व्यवहार कर सके, और यदि बैकएंड में कोई भी सेट नहीं है तो डिफ़ॉल्ट मान उपलब्ध हों।

ऐसा करने के लिए, एक स्ट्रिंग डिक्शनरी बनाएं, और इसे उन डिफ़ॉल्ट का प्रतिनिधित्व करने वाले कुंजी/मूल्य जोड़े से भर दें जिन्हें आप जोड़ना चाहते हैं। यदि आपने पहले से ही रिमोट कॉन्फिग बैकएंड पैरामीटर मान कॉन्फ़िगर कर लिया है, तो आप एक फ़ाइल डाउनलोड कर सकते हैं जिसमें ये कुंजी/मान जोड़े हैं और इसका उपयोग अपने स्ट्रिंग डिक्शनरी के निर्माण के लिए कर सकते हैं। अधिक जानकारी के लिए, रिमोट कॉन्फिग टेम्पलेट डिफ़ॉल्ट डाउनलोड करें देखें।

( 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: अपने ऐप में उपयोग करने के लिए पैरामीटर मान प्राप्त करें

अब आप रिमोट कॉन्फिग ऑब्जेक्ट से पैरामीटर मान प्राप्त कर सकते हैं। यदि आप रिमोट कॉन्फिग बैकएंड में मान सेट करते हैं, उन्हें लाते हैं, और फिर उन्हें सक्रिय करते हैं, तो वे मान आपके ऐप पर उपलब्ध होते हैं। अन्यथा, आपको इन-ऐप पैरामीटर मान SetDefaultsAsync() का उपयोग करके कॉन्फ़िगर किया गया मिलता है।

इन मानों को प्राप्त करने के लिए, पैरामीटर कुंजी को तर्क के रूप में प्रदान करते हुए, GetValue() का उपयोग करें। यह एक ConfigValue लौटाता है, जिसमें मान को विभिन्न आधार प्रकारों में परिवर्तित करने के गुण होते हैं।

चरण 4: पैरामीटर मान सेट करें

  1. फायरबेस कंसोल में, अपना प्रोजेक्ट खोलें।
  2. रिमोट कॉन्फिग डैशबोर्ड देखने के लिए मेनू से रिमोट कॉन्फिग चुनें।
  3. पैरामीटर को उन्हीं नामों से परिभाषित करें, जिन्हें आपने अपने ऐप में परिभाषित किया है। प्रत्येक पैरामीटर के लिए, आप एक डिफ़ॉल्ट मान (जो अंततः इन-ऐप डिफ़ॉल्ट मान को ओवरराइड कर देगा) और सशर्त मान सेट कर सकते हैं। अधिक जानने के लिए, रिमोट कॉन्फ़िगरेशन पैरामीटर और शर्तें देखें।

चरण 5: मान प्राप्त करें और सक्रिय करें (आवश्यकतानुसार)

रिमोट कॉन्फिग बैकएंड से पैरामीटर मान लाने के लिए, FetchAsync() विधि को कॉल करें। आपके द्वारा बैकएंड पर सेट किया गया कोई भी मान रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट में लाया और कैश किया जाता है।

// 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() का उपयोग करके सक्रिय किए जाते हैं।

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: वास्तविक समय में अपडेट सुनें

पैरामीटर मान प्राप्त करने के बाद, आप रिमोट कॉन्फिग बैकएंड से अपडेट सुनने के लिए रीयल-टाइम रिमोट कॉन्फिग का उपयोग कर सकते हैं। अपडेट उपलब्ध होने पर रीयल-टाइम रिमोट कॉन्फ़िग कनेक्टेड डिवाइसों को संकेत देता है और आपके द्वारा नया रिमोट कॉन्फ़िग संस्करण प्रकाशित करने के बाद स्वचालित रूप से परिवर्तन लाता है।

रीयल-टाइम अपडेट Android और Apple प्लेटफ़ॉर्म के लिए Firebase Unity SDK v11.0.0+ और उच्चतर द्वारा समर्थित हैं।

  1. अपने ऐप में, अपडेट सुनना शुरू करने और किसी भी नए या अपडेट किए गए पैरामीटर मान को स्वचालित रूप से लाने के लिए एक 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;
}

अगली बार जब आप अपने रिमोट कॉन्फ़िगरेशन का नया संस्करण प्रकाशित करेंगे, तो जो डिवाइस आपका ऐप चला रहे हैं और परिवर्तनों को सुन रहे हैं, वे पूर्णता हैंडलर को कॉल करेंगे।

अगले कदम

यदि आपने पहले से ऐसा नहीं किया है, तो रिमोट कॉन्फिग उपयोग मामलों का पता लगाएं, और कुछ प्रमुख अवधारणाओं और उन्नत रणनीतियों के दस्तावेज़ों पर एक नज़र डालें, जिनमें शामिल हैं: