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


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

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

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

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

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

    तीव्र

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

    उद्देश्य सी

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

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

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

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

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

  1. NSDictionary ऑब्जेक्ट या प्लिस्ट फ़ाइल का उपयोग करके पैरामीटर नामों और डिफ़ॉल्ट पैरामीटर मानों का एक सेट परिभाषित करें।

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

    आराम

    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
    

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

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

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

  2. setDefaults: निम्नलिखित उदाहरण एक प्लिस्ट फ़ाइल से इन-ऐप डिफ़ॉल्ट मान सेट करता है:

    तीव्र

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    उद्देश्य सी

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

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

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

चरण 4: पैरामीटर मान सेट करें

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

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

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

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

ऐसे मामलों के लिए जहां आप एक कॉल में मान प्राप्त करना और सक्रिय करना चाहते हैं, fetchAndActivateWithCompletionHandler: का उपयोग करें।

यह उदाहरण रिमोट कॉन्फिग बैकएंड (कैश्ड मान नहीं) से मान प्राप्त करता है और उन्हें ऐप पर उपलब्ध कराने के लिए activateWithCompletionHandler: को कॉल करता है:

तीव्र

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

उद्देश्य सी

[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);
    }
}];

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

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

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

Apple प्लेटफ़ॉर्म v10.7.0+ और उच्चतर के लिए रीयल-टाइम अपडेट Firebase SDK द्वारा समर्थित हैं।

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

    तीव्र

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

    उद्देश्य सी

    __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 लौटाता है। एसडीके संस्करण 6.3.0 से पहले, सीमा 60 मिनट की विंडो में 5 अनुरोध प्राप्त करने की थी (नए संस्करणों में अधिक अनुमत सीमाएँ हैं)।

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

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

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

अगले कदम

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