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


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

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

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

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

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

    इसके अलावा, Analytics सेट अप करने के दौरान, आपको Firebase SDK टूल जोड़ना होगा के सबसे आसान तरीके हैं.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // 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.0.2")
    }
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    क्या आपको Kotlin से जुड़े लाइब्रेरी मॉड्यूल की तलाश है? इतने समय में शुरू होगा अक्टूबर 2023 (Firebase BoM 32.5.0) में, Kotlin और Java डेवलपर, दोनों मुख्य लाइब्रेरी मॉड्यूल पर निर्भर करते हैं (जानकारी के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले सवाल).

दूसरा चरण: रिमोट कॉन्फ़िगरेशन सिंगलटन ऑब्जेक्ट पाना

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

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

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

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

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

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

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

    अगर आपने पहले से ही रिमोट कॉन्फ़िगरेशन के बैकएंड पैरामीटर की वैल्यू कॉन्फ़िगर कर ली हैं, आपके पास जनरेट की गई एक ऐसी एक्सएमएल फ़ाइल डाउनलोड करने का विकल्प होता है जिसमें सभी डिफ़ॉल्ट वैल्यू शामिल हों और इसे अपने ऐप्लिकेशन की 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. इसका उपयोग करके इन मानों को रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट में जोड़ें setDefaultsAsync(int), जैसा कि दिखाया गया है:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

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

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

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

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

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

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

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

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

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

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

रीयल-टाइम अपडेट, Android v21.3.0+ (Firebase BoM) के लिए Firebase SDK टूल पर काम करते हैं वर्शन 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() {
                @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. SDK टूल के वर्शन 17.0.0 से पहले, 60 मिनट में, फ़ेच करने के लिए सिर्फ़ पांच अनुरोध किए जा सकते थे विंडो (नए वर्शन में अनुमति की ज़्यादा सीमाएं होती हैं).

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

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

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

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

अगले चरण

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