अपने ऐप्लिकेशन में पैरामीटर तय करने के लिए, Firebase Remote Config का इस्तेमाल किया जा सकता है और इससे क्लाउड में उनकी वैल्यू अपडेट हो जाती हैं. इससे, आपको लुक में बदलाव करने और ऐप्लिकेशन का अपडेट उपलब्ध कराए बिना आपके ऐप्लिकेशन के काम करने का तरीका. इस गाइड से आपको चरणों के बारे में बताना है और कुछ सैंपल कोड देना है, जिनमें से हर एक क्लोन करने या डाउनलोड करने के लिए, Firebase/क्विकस्टार्ट iOS GitHub रिपॉज़िटरी.
पहला चरण: अपने ऐप्लिकेशन में Remote Config जोड़ना
अगर आपने पहले से ऐसा नहीं किया है, तो अपने Apple प्रोजेक्ट में Firebase जोड़ें.
Remote Config के लिए, Google Analytics ऐप्लिकेशन इंस्टेंस के लिए शर्त के हिसाब से टारगेटिंग उपयोगकर्ता प्रॉपर्टी और ऑडियंस में जोड़े जा सकते हैं. पक्का करें कि की पहचान करें अपने प्रोजेक्ट में Google Analytics चालू करें.
सिंगलटन 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 बैकएंड से कनेक्ट होने से पहले, सही तरीके से काम करे. साथ ही, बैकएंड में कोई वैल्यू सेट न होने पर, डिफ़ॉल्ट वैल्यू उपलब्ध हों.
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 कंसोल
पैरामीटर टैब में, मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
जब कहा जाए, तब iOS के लिए .plist चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
setDefaults:
का इस्तेमाल करके, इन वैल्यू को Remote Config ऑब्जेक्ट में जोड़ें. नीचे दिए गए उदाहरण में, plist फ़ाइल से इन-ऐप्लिकेशन डिफ़ॉल्ट वैल्यू सेट की गई हैं:Swift
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objective-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
तीसरा चरण: अपने ऐप्लिकेशन में इस्तेमाल करने के लिए पैरामीटर वैल्यू पाना
अब Remote Config ऑब्जेक्ट से पैरामीटर वैल्यू ली जा सकती हैं. अगर आपको बाद में
Remote Config बैकएंड में वैल्यू सेट करें, उन्हें फ़ेच करें, और फिर उन्हें चालू करें,
वे मान आपके ऐप्लिकेशन के लिए उपलब्ध हों. नहीं तो, आपको इन-ऐप्लिकेशन पैरामीटर मिलेगा
इसका इस्तेमाल करके कॉन्फ़िगर की गई वैल्यू
setDefaults:
.
ये वैल्यू पाने के लिए, पैरामीटर कुंजी को आर्ग्युमेंट के तौर पर देकर, configValueForKey:
तरीका कॉल करें.
चौथा चरण: पैरामीटर वैल्यू को सेट करना
Firebase कंसोल या Remote Config बैकएंड एपीआई, ऐप्लिकेशन में वैल्यू को बदलने के लिए, नई बैकएंड डिफ़ॉल्ट वैल्यू बनाई जा सकती हैं और उपयोगकर्ता टारगेटिंग के हिसाब से तय करें. इस सेक्शन में, इन वैल्यू को बनाने के लिए Firebase कंसोल के चरणों के बारे में बताया गया है.
- Firebase कंसोल में, अपना प्रोजेक्ट खोलें.
- Remote Config देखने के लिए, मेन्यू से Remote Config को चुनें डैशबोर्ड पर जाएं.
- पैरामीटर के नाम वही रखें जो आपने अपने ऐप्लिकेशन में तय किए हैं. हर पैरामीटर के लिए, एक डिफ़ॉल्ट वैल्यू सेट की जा सकती है. यह वैल्यू, आखिर में ऐप्लिकेशन में मौजूद डिफ़ॉल्ट वैल्यू को बदल देगी. साथ ही, शर्त के हिसाब से वैल्यू भी सेट की जा सकती हैं. इस बारे में ज़्यादा जानने के लिए, यह देखें 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 और इसके बाद के वर्शन के साथ काम करते हैं.
अपने ऐप्लिकेशन में, अपडेट सुनने के लिए
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]; }); }]; } }];
अगली बार जब आप अपने Remote Config का नया वर्शन पब्लिश करेंगे, तो डिवाइसों पर जो आपके ऐप्लिकेशन को चला रहे हैं और बदलावों को सुन रहे हैं, उनके लिए हैंडलर.
थ्रॉटलिंग
अगर कोई ऐप्लिकेशन कम समय में कई बार फ़ेच करता है, तो फ़ेच कॉल को कम कर दिया जाता है और एसडीके टूल FIRRemoteConfigFetchStatusThrottled
दिखाता है. SDK टूल के 6.3.0 वर्शन से पहले, 60 मिनट की विंडो में फ़ेच करने के लिए पांच अनुरोध किए जा सकते थे. हालांकि, नए वर्शन में इसकी सीमा ज़्यादा है.
ऐप्लिकेशन डेवलपमेंट के दौरान, कैश मेमोरी को बार-बार रीफ़्रेश करने के लिए, आपको उसे ज़्यादा बार फ़ेच करना पड़ सकता है. ऐसा हर घंटे कई बार किया जा सकता है, ताकि ऐप्लिकेशन को डेवलप और टेस्ट करते समय, आपको तेज़ी से बदलाव करने में मदद मिल सके. रियल-टाइम रिमोट कॉन्फ़िगरेशन अपडेट, सर्वर पर कॉन्फ़िगरेशन अपडेट होने पर, कैश मेमोरी को अपने-आप बायपास कर देता है. तेज़ी से टास्क पूरे करने के लिए
कई डेवलपर के साथ प्रोजेक्ट पर काम कर रहा है, तो आप कुछ समय के लिए
FIRRemoteConfigSettings
प्रॉपर्टी, जिसमें फ़ेच करने के लिए कम से कम इंटरवल कम है
(MinimumFetchInterval
) आपके ऐप्लिकेशन में.
Remote Config के लिए डिफ़ॉल्ट और सुझाया गया प्रोडक्शन फ़ेच इंटरवल 12 घंटे है, जो इसका मतलब है कि 12 घंटे में बैकएंड से एक से ज़्यादा बार कॉन्फ़िगरेशन फ़ेच नहीं किए जाएंगे विंडो के लिए विंडो सेट की जा सकती है, चाहे वास्तव में कितने फ़ेच कॉल किए गए हैं. खास तौर पर, फ़ेच करने के लिए कम से कम इंटरवल इस क्रम में तय किया जाता है:
fetch(long)
में मौजूद पैरामीटरFIRRemoteConfigSettings.MinimumFetchInterval
में मौजूद पैरामीटर- 12 घंटे की डिफ़ॉल्ट वैल्यू
अगले चरण
अगर आपने पहले से ऐसा नहीं किया है, तो Remote Config को एक्सप्लोर करें इस्तेमाल के कुछ उदाहरण देख सकते हैं. साथ ही, अहम सिद्धांतों और बेहतर रणनीतियों के दस्तावेज़ हैं. इनमें ये शामिल हैं: