Firebase रिमोट कॉन्फ़िगरेशन का इस्तेमाल शुरू करना


अपने ऐप्लिकेशन में पैरामीटर तय करने और उसे अपडेट करने के लिए, Firebase Remote Config का इस्तेमाल किया जा सकता है क्लाउड में इनकी वैल्यू इस्तेमाल की जा सकती हैं. इनकी मदद से, टेंप्लेट के काम करने के तरीके और लुक में बदलाव किया जा सकता है आपके ऐप्लिकेशन का अपडेट डिस्ट्रिब्यूट किए बिना. इस गाइड में, आपको YouTube Shopping का इस्तेमाल शुरू करने का तरीका बताया गया है. साथ ही, सैंपल कोड, जिसमें से सभी firebase/quickstart-android GitHub डेटा स्टोर करने की जगह.

पहला चरण: अपने ऐप्लिकेशन में Firebase और रिमोट कॉन्फ़िगरेशन SDK टूल जोड़ना

  1. अगर आपने अब तक ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.

  2. Remote Config के लिए, Google Analytics ऐप्लिकेशन इंस्टेंस के लिए शर्त के हिसाब से टारगेटिंग उपयोगकर्ता प्रॉपर्टी और ऑडियंस में जोड़े जा सकते हैं. पक्का करें कि तो आपने अपने प्रोजेक्ट में Google Analytics को चालू किया है.

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

    इसके अलावा, Analytics सेट अप करने के दौरान, आपको Firebase SDK टूल जोड़ना होगा आपके ऐप्लिकेशन में Google Analytics के लिए.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.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")
    }

    Firebase Android BoM का इस्तेमाल करने पर, आपका ऐप्लिकेशन हमेशा Firebase Android लाइब्रेरी के साथ काम करने वाले वर्शन का इस्तेमाल करेगा.

    (वैकल्पिक) BoM का इस्तेमाल करके, बिना Firebase लाइब्रेरी डिपेंडेंसी जोड़ें

    अगर आपको Firebase BoM का इस्तेमाल नहीं करना है, तो आपको Firebase लाइब्रेरी का हर वर्शन बताना होगा इसकी डिपेंडेंसी लाइन में.

    ध्यान दें कि अगर आप अपने ऐप्लिकेशन में कई Firebase लाइब्रेरी का इस्तेमाल करते हैं, तो हम लाइब्रेरी वर्शन को मैनेज करने के लिए, 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:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.0")
    }
    क्या आपको Kotlin से जुड़े लाइब्रेरी मॉड्यूल की तलाश है? इतने समय में शुरू होगा अक्टूबर 2023 (Firebase BoM 32.5.0), Kotlin और Java डेवलपर, दोनों यह मुख्य लाइब्रेरी मॉड्यूल पर निर्भर करता है (जानकारी के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले सवाल).

दूसरा चरण: Remote Config सिंगलटन ऑब्जेक्ट पाना

Remote Config ऑब्जेक्ट इंस्टेंस पाएं और बार-बार रीफ़्रेश होने के लिए, फ़ेच करने का कम से कम इंटरवल:

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);

सिंगलटन ऑब्जेक्ट का इस्तेमाल, इन-ऐप्लिकेशन डिफ़ॉल्ट पैरामीटर वैल्यू को स्टोर करने, फ़ेच करने के लिए किया जाता है बैकएंड से अपडेट की गई पैरामीटर वैल्यू. साथ ही, फ़ेच की गई वैल्यू को कंट्रोल किया जा सकता है आपके ऐप्लिकेशन के लिए उपलब्ध कराया गया.

डेवलपमेंट के दौरान, यह सुझाव दिया जाता है कि फ़ेच किए जाने की संख्या, कम से कम कितनी हो अंतराल. थ्रॉटलिंग देखें हमारा वीडियो देखें.

तीसरा चरण: ऐप्लिकेशन में डिफ़ॉल्ट पैरामीटर वैल्यू को सेट करना

Remote Config में, इन-ऐप्लिकेशन डिफ़ॉल्ट पैरामीटर वैल्यू को सेट किया जा सकता है ऑब्जेक्ट की बुकिंग करें, ताकि आपका ऐप्लिकेशन Remote Config बैकएंड में हो, ताकि कोई भी डिफ़ॉल्ट वैल्यू उपलब्ध न हो बैकएंड में सेट किया जा सकता है.

  1. पैरामीटर के नामों और डिफ़ॉल्ट पैरामीटर वैल्यू का एक सेट तय करने के लिए, Map ऑब्जेक्ट या एक्सएमएल रिसॉर्स फ़ाइल आपके ऐप्लिकेशन के res/xml फ़ोल्डर में सेव किया गया. Remote Config क्विकस्टार्ट सैंपल ऐप्लिकेशन, एक्सएमएल फ़ाइल का इस्तेमाल करें.

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

    REST

    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
    

    Firebase कंसोल

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

    2. जब कहा जाए, तब Android के लिए .xml चालू करें. इसके बाद, क्लिक करें फ़ाइल डाउनलोड करें.

  2. इसका इस्तेमाल करके, इन वैल्यू को Remote Config ऑब्जेक्ट में जोड़ें setDefaultsAsync(int), जैसा कि दिखाया गया है:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

चौथा चरण: अपने ऐप्लिकेशन में इस्तेमाल करने के लिए पैरामीटर वैल्यू पाना

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

पांचवां चरण: Remote Config बैकएंड में पैरामीटर वैल्यू सेट करना

Firebase कंसोल या Remote Config बैकएंड एपीआई, आपके पास इन-ऐप्लिकेशन वैल्यू को बदलने वाली नई सर्वर साइड डिफ़ॉल्ट वैल्यू बनाने का विकल्प है और उपयोगकर्ता टारगेटिंग के हिसाब से तय करें. इस सेक्शन पर इन वैल्यू को बनाने के लिए, Firebase कंसोल के चरणों के बारे में बताता है.

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

छठा चरण: वैल्यू फ़ेच और चालू करना

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

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

    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();
                }
            });

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

सातवां चरण: रीयल टाइम में अपडेट सुनना

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

रीयल-टाइम अपडेट, Firebase SDK टूल पर Android v21.3.0+ (Firebase BoM) के लिए काम करते हैं वर्शन 31.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<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    displayWelcomeMessage();
                }
            });
        }
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
  2. अगली बार जब आप अपने Remote Config का नया वर्शन पब्लिश करेंगे, तो डिवाइसों पर जो आपका ऐप्लिकेशन चला रहे हैं और बदलावों को सुन रहे हैं, तो उनकी ConfigUpdateListener.

थ्रॉटलिंग

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

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

Remote Config का डिफ़ॉल्ट फ़ेच इंटरवल कम से कम 12 घंटे का है. इसका मतलब है कि 12 घंटे में बैकएंड से एक से ज़्यादा बार कॉन्फ़िगरेशन फ़ेच नहीं किए जाएंगे विंडो के लिए कीमत सेट कर सकती है, चाहे असल में कितने फ़ेच कॉल किए गए हों. खास तौर पर, फ़ेच करने के लिए कम से कम इंटरवल इस क्रम में तय होता है:

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

डेटा फ़ेच करने के लिए तय किया गया कम से कम इंटरवल, कस्टम वैल्यू पर सेट करने के लिए FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) का इस्तेमाल करें.

अगले चरण

अगर आपने पहले से ऐसा नहीं किया है, तो Remote Config को एक्सप्लोर करें इस्तेमाल के कुछ उदाहरण देख सकते हैं. साथ ही, अहम सिद्धांतों और बेहतर रणनीतियों के दस्तावेज़ हैं. इनमें ये शामिल हैं: