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


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

चरण 1: अपने ऐप में फायरबेस और रिमोट कॉन्फिग एसडीके जोड़ें

  1. यदि आपने पहले से नहीं किया है, तो अपने एंड्रॉइड प्रोजेक्ट में फायरबेस जोड़ें

  2. रिमोट कॉन्फ़िगरेशन के लिए, उपयोगकर्ता संपत्तियों और दर्शकों के लिए ऐप इंस्टेंस के सशर्त लक्ष्यीकरण के लिए Google Analytics की आवश्यकता होती है। सुनिश्चित करें कि आप अपने प्रोजेक्ट में Google Analytics सक्षम करें

  3. अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल में (आमतौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle ), रिमोट कॉन्फ़िगरेशन के लिए निर्भरता जोड़ें Android के लिए लाइब्रेरी. हम लाइब्रेरी वर्जनिंग को नियंत्रित करने के लिए फायरबेस एंड्रॉइड BoM का उपयोग करने की सलाह देते हैं।

    साथ ही, Analytics सेटअप के भाग के रूप में, आपको अपने ऐप में Google Analytics के लिए Firebase SDK जोड़ना होगा।

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    फायरबेस एंड्रॉइड बीओएम का उपयोग करके, आपका ऐप हमेशा फायरबेस एंड्रॉइड लाइब्रेरी के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना फायरबेस लाइब्रेरी निर्भरताएँ जोड़ें

    यदि आप फायरबेस बीओएम का उपयोग नहीं करना चुनते हैं, तो आपको प्रत्येक फायरबेस लाइब्रेरी संस्करण को उसकी निर्भरता पंक्ति में निर्दिष्ट करना होगा।

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए BoM का उपयोग करने की दृढ़ता से अनुशंसा करते हैं, जो सुनिश्चित करता है कि सभी संस्करण संगत हैं।

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-config:21.6.3")
        implementation("com.google.firebase:firebase-analytics:21.6.1")
    }
    
    कोटलिन-विशिष्ट लाइब्रेरी मॉड्यूल खोज रहे हैं? अक्टूबर 2023 (फायरबेस बीओएम 32.5.0) से शुरू होकर, कोटलिन और जावा डेवलपर्स दोनों मुख्य लाइब्रेरी मॉड्यूल पर निर्भर हो सकते हैं (विवरण के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले प्रश्न देखें)।

चरण 2: रिमोट कॉन्फिग सिंगलटन ऑब्जेक्ट प्राप्त करें

रिमोट कॉन्फिग ऑब्जेक्ट इंस्टेंस प्राप्त करें और बार-बार रिफ्रेश करने की अनुमति देने के लिए न्यूनतम फ़ेच अंतराल सेट करें:

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

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

विकास के दौरान, अपेक्षाकृत कम न्यूनतम फ़ेच अंतराल निर्धारित करने की अनुशंसा की जाती है। अधिक जानकारी के लिए थ्रॉटलिंग देखें।

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

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

  1. अपने ऐप के res/xml फ़ोल्डर में संग्रहीत मैप ऑब्जेक्ट या XML संसाधन फ़ाइल का उपयोग करके पैरामीटर नामों और डिफ़ॉल्ट पैरामीटर मानों का एक सेट परिभाषित करें। रिमोट कॉन्फिग क्विकस्टार्ट नमूना ऐप डिफ़ॉल्ट पैरामीटर नाम और मानों को परिभाषित करने के लिए एक XML फ़ाइल का उपयोग करता है।

    यदि आपने पहले से ही रिमोट कॉन्फिग बैकएंड पैरामीटर मान कॉन्फ़िगर कर लिया है, तो आप एक जेनरेट की गई XML फ़ाइल डाउनलोड कर सकते हैं जिसमें सभी डिफ़ॉल्ट मान शामिल हैं और इसे अपने ऐप की res/xml निर्देशिका में सहेज सकते हैं:

    आराम

    curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
    

    फायरबेस कंसोल

    1. पैरामीटर टैब में, मेनू खोलें, और डिफ़ॉल्ट मान डाउनलोड करें चुनें।

    2. संकेत मिलने पर, Android के लिए .xml सक्षम करें, फिर डाउनलोड फ़ाइल पर क्लिक करें।

  2. जैसा कि दिखाया गया है, इन मानों को setDefaultsAsync(int) का उपयोग करके रिमोट कॉन्फिग ऑब्जेक्ट में जोड़ें:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

चरण 4: अपने ऐप में उपयोग करने के लिए पैरामीटर मान प्राप्त करें

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

चरण 5: रिमोट कॉन्फिग बैकएंड में पैरामीटर मान सेट करें

फायरबेस कंसोल या रिमोट कॉन्फिग बैकएंड एपीआई का उपयोग करके, आप नए सर्वर-साइड डिफ़ॉल्ट मान बना सकते हैं जो आपके वांछित सशर्त तर्क या उपयोगकर्ता लक्ष्यीकरण के अनुसार इन-ऐप मानों को ओवरराइड करते हैं। यह अनुभाग इन मानों को बनाने के लिए फायरबेस कंसोल चरणों का वर्णन करता है।

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

चरण 6: मान प्राप्त करें और सक्रिय करें

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

    ऐसे मामलों के लिए जहां आप एक कॉल में मान प्राप्त करना और सक्रिय करना चाहते हैं, आप रिमोट कॉन्फ़िगरेशन बैकएंड से मान प्राप्त करने और उन्हें ऐप पर उपलब्ध कराने के लिए एक fetchAndActivate() अनुरोध का उपयोग कर सकते हैं:

    Kotlin+KTX

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(
                    this,
                    "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT,
                ).show()
            } else {
                Toast.makeText(
                    this,
                    "Fetch failed",
                    Toast.LENGTH_SHORT,
                ).show()
            }
            displayWelcomeMessage()
        }

    Java

    mFirebaseRemoteConfig.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        boolean updated = task.getResult();
                        Log.d(TAG, "Config params updated: " + updated);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

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

चरण 7: वास्तविक समय में अपडेट सुनें

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

रीयल-टाइम अपडेट एंड्रॉइड v21.3.0+ (फायरबेस BoM v31.2.4+) के लिए फायरबेस एसडीके द्वारा समर्थित हैं।

  1. अपने ऐप में, अपडेट सुनना शुरू करने और स्वचालित रूप से कोई भी नया पैरामीटर मान प्राप्त करने के लिए addOnConfigUpdateListener() का उपयोग करें। अद्यतन कॉन्फ़िगरेशन को सक्रिय करने के लिए onUpdate() कॉलबैक लागू करें।

    Kotlin+KTX

    remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
        override fun onUpdate(configUpdate : ConfigUpdate) {
           Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys);
    
           if (configUpdate.updatedKeys.contains("welcome_message")) {
               remoteConfig.activate().addOnCompleteListener {
                   displayWelcomeMessage()
               }
           }
        }
    
        override fun onError(error : FirebaseRemoteConfigException) {
            Log.w(TAG, "Config update error with code: " + error.code, error)
        }
    })
    

    Java

    mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
        @Override
        public void onUpdate(ConfigUpdate configUpdate) {
            Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
    
            mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    displayWelcomeMessage();
                }
            });
        }
    
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
    
  2. अगली बार जब आप अपने रिमोट कॉन्फिग का नया संस्करण प्रकाशित करेंगे, तो जो डिवाइस आपका ऐप चला रहे हैं और परिवर्तनों को सुन रहे हैं, वे ConfigUpdateListener को कॉल करेंगे।

थ्रॉटलिंग

यदि कोई ऐप कम समय अवधि में बहुत अधिक बार फ़ेच करता है, तो फ़ेच कॉल को थ्रॉटल कर दिया जाता है और SDK FirebaseRemoteConfigFetchThrottledException लौटाता है। एसडीके संस्करण 17.0.0 से पहले, सीमा 60 मिनट की विंडो में 5 अनुरोध प्राप्त करने की थी (नए संस्करणों में अधिक अनुमत सीमाएँ हैं)।

ऐप विकास के दौरान, हो सकता है कि आप बार-बार (प्रति घंटे कई बार) कॉन्फ़िगरेशन लाना और सक्रिय करना चाहें ताकि आप अपने ऐप को विकसित और परीक्षण करते समय तेजी से पुनरावृत्त कर सकें। जब सर्वर पर कॉन्फ़िगरेशन अपडेट किया जाता है तो रीयल-टाइम रिमोट कॉन्फ़िगरेशन अपडेट स्वचालित रूप से कैश को बायपास कर देता है। अधिकतम 10 डेवलपर्स वाले प्रोजेक्ट पर तीव्र पुनरावृत्ति को समायोजित करने के लिए, आप अस्थायी रूप से अपने ऐप में कम न्यूनतम फ़ेच अंतराल ( setMinimumFetchIntervalInSeconds ) के साथ एक FirebaseRemoteConfigSettings ऑब्जेक्ट सेट कर सकते हैं।

रिमोट कॉन्फिग के लिए डिफ़ॉल्ट न्यूनतम फ़ेच अंतराल 12 घंटे है, जिसका अर्थ है कि कॉन्फ़िगरेशन को 12 घंटे की विंडो में एक से अधिक बार बैकएंड से फ़ेच नहीं किया जाएगा, भले ही वास्तव में कितने फ़ेच कॉल किए गए हों। विशेष रूप से, न्यूनतम फ़ेच अंतराल निम्नलिखित क्रम में निर्धारित किया जाता है:

  1. fetch(long)
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) में पैरामीटर
  3. 12 घंटे का डिफ़ॉल्ट मान

न्यूनतम फ़ेच अंतराल को कस्टम मान पर सेट करने के लिए, FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) का उपयोग करें।

अगले कदम

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