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


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

पहला चरण: अपने ऐप्लिकेशन में Remote Config जोड़ना

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

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

  3. सिंगलटन Remote Config ऑब्जेक्ट बनाएं, जैसा कि इस उदाहरण में दिखाया गया है:

    Swift

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    Objective-C

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

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

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

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

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

  1. पैरामीटर के नामों का सेट और डिफ़ॉल्ट पैरामीटर वैल्यू तय करने के लिए, NSDictionary ऑब्जेक्ट या plist फ़ाइल.

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

    REST

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

    Firebase कंसोल

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

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

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

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

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

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

चौथा चरण: पैरामीटर वैल्यू को सेट करना

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

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

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

Remote Config से पैरामीटर मान फ़ेच करने के लिए, fetchWithCompletionHandler: या fetchWithExpirationDuration:completionHandler: तरीका. बैकएंड पर सेट की गई सभी वैल्यू फ़ेच की जाती हैं और Remote Config ऑब्जेक्ट में कैश मेमोरी में सेव किया गया.

ऐसे मामलों में जहां आपको एक ही कॉल में वैल्यू फ़ेच और चालू करनी हों उनके लिए इसका इस्तेमाल करें fetchAndActivateWithCompletionHandler:.

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

Swift

remoteConfig.fetch { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate { changed, error in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.displayWelcome()
}

Objective-C

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        if (error != nil) {
          NSLog(@"Activate error: %@", error.localizedDescription);
        } else {
          dispatch_async(dispatch_get_main_queue(), ^{
            [self displayWelcome];
          });
        }
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
}];

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

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

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

रीयल-टाइम अपडेट, Firebase SDK टूल पर Apple प्लैटफ़ॉर्म के लिए v10.7.0 और इसके बाद के वर्शन के साथ काम करते हैं.

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

    Swift

    remoteConfig.addOnConfigUpdateListener { configUpdate, error in
      guard let configUpdate, error == nil else {
        print("Error listening for config updates: \(error)")
      }
    
      print("Updated keys: \(configUpdate.updatedKeys)")
    
      self.remoteConfig.activate { changed, error in
        guard error == nil else { return self.displayError(error) }
        DispatchQueue.main.async {
          self.displayWelcome()
        }
      }
    }

    Objective-C

    __weak __typeof__(self) weakSelf = self;
    [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error listening for config updates %@", error.localizedDescription);
      } else {
        NSLog(@"Updated keys: %@", configUpdate.updatedKeys);
    
        __typeof__(self) strongSelf = weakSelf;
        [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Activate error %@", error.localizedDescription);
          }
    
          dispatch_async(dispatch_get_main_queue(), ^{
            [strongSelf displayWelcome];
          });
        }];
      }
    }];
  2. अगली बार जब आप अपने Remote Config का नया वर्शन पब्लिश करेंगे, तो डिवाइसों पर जो आपके ऐप्लिकेशन को चला रहे हैं और बदलावों को सुन रहे हैं, उनके लिए हैंडलर.

थ्रॉटलिंग

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

ऐप्लिकेशन डेवलपमेंट के दौरान,हो सकता है कि आप कैश मेमोरी को रीफ़्रेश करने के लिए बार-बार फ़ेच करना चाहें अक्सर (हर घंटे में कई बार) इसलिए अपलोड किया जाता है, ताकि आप उसे तेज़ी से दोहरा सकें और अपने ऐप्लिकेशन को टेस्ट करें. रीयल-टाइम रिमोट कॉन्फ़िगरेशन अपडेट, सर्वर पर कॉन्फ़िगरेशन अपडेट होने पर कैश मेमोरी में सेव करें. तेज़ी से टास्क पूरे करने के लिए कई डेवलपर के साथ प्रोजेक्ट पर काम कर रहा है, तो आप कुछ समय के लिए FIRRemoteConfigSettings प्रॉपर्टी, जिसमें फ़ेच करने के लिए कम से कम इंटरवल कम है (MinimumFetchInterval) आपके ऐप्लिकेशन में.

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

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

अगले चरण

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