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


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

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

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

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

  3. सिंगलटन रिमोट कॉन्फ़िगरेशन ऑब्जेक्ट बनाएं, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

    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;

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

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

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

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

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

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

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

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

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

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

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

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

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

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

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

इस उदाहरण में रिमोट कॉन्फ़िगरेशन बैकएंड से वैल्यू फ़ेच की गई हैं, न कि कैश मेमोरी में सेव की गई वैल्यू) और कॉल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);
    }
}];

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

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

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

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

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

थ्रॉटलिंग

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

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

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

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

अगले चरण

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