Uygulamanızda parametreleri tanımlamak ve değerlerini bulutta güncellemek için Firebase Remote Config'ü kullanabilirsiniz. Böylece, uygulama güncellemesi dağıtmadan uygulamanızın görünümünü ve davranışını değiştirebilirsiniz. Bu kılavuzda, başlangıç adımlarını adım adım uygulayabilir ve bazı örnek kodları inceleyebilirsiniz. Bu örnek kodların tümü firebase/quickstart-ios GitHub deposundan klonlanabilir veya indirilebilir.
1. Adım: Uygulamanıza Remote Config ekleyin
Henüz yapmadıysanız Firebase'i Apple projenize ekleyin.
Remote Config için Google Analytics, uygulama örneklerinin kullanıcı özelliklerine ve kitlelere koşullu olarak hedeflenmesi amacıyla gereklidir. Projenizde Google Analytics'yi etkinleştirdiğinizden emin olun.
Aşağıdaki örnekte gösterildiği gibi tekil Remote Config nesnesini oluşturun:
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;
Bu nesne, uygulama içi varsayılan parametre değerlerini depolamak, güncellenmiş parametre değerlerini Remote Config arka ucundan almak ve getirilen değerlerin uygulamanıza ne zaman sunulacağını kontrol etmek için kullanılır.
Geliştirme sırasında, minimum getirme aralığını nispeten düşük bir değere ayarlamak önerilir. Daha fazla bilgi için Düşük hızlandırma bölümüne bakın.
2. adım: Uygulama içi varsayılan parametre değerlerini ayarlayın
Uygulamanızın Remote Config arka ucuna bağlanmadan önce istenen şekilde davranması ve arka uçta ayarlanmamışsa varsayılan değerlerin kullanılabilmesi için Remote Config nesnesinde uygulama içi varsayılan parametre değerleri ayarlayabilirsiniz.
Bir
NSDictionary
nesnesi veya plist dosyası kullanarak bir dizi parametre adı ve varsayılan parametre değeri tanımlayın.Remote Config arka uç parametre değerlerini daha önce yapılandırdıysanız tüm varsayılan değerleri içeren oluşturulmuş bir
plist
dosyasını indirip Xcode projenize kaydedebilirsiniz.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 konsol
Parametreler sekmesinde Menü'yü açın ve Varsayılan değerleri indir'i seçin.
İstendiğinde iOS için.plist'i etkinleştirin ve ardından Dosyayı indir'i tıklayın.
setDefaults:
kullanarak bu değerleri Remote Config nesnesine ekleyin. Aşağıdaki örnekte, bir plist dosyasından uygulama içi varsayılan değerler ayarlanmaktadır:Swift
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objective-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
3. Adım: Uygulamanızda kullanacağınız parametre değerlerini alın
Artık Remote Config nesnesinden parametre değerleri alabilirsiniz. Daha sonra Remote Config arka ucunda değerler ayarlar, bunları getirir ve etkinleştirirseniz bu değerler uygulamanız tarafından kullanılabilir. Aksi takdirde, setDefaults:
kullanılarak yapılandırılan uygulama içi parametre değerlerini alırsınız.
Bu değerleri almak için parametre anahtarını bağımsız değişken olarak sağlayarak configValueForKey:
yöntemini çağırın.
let remoteConfig = RemoteConfig.remoteConfig()
// Retrieve a parameter value using configValueForKey
let welcomeMessageValue = remoteConfig.configValue(forKey: "welcome_message")
let welcomeMessage = welcomeMessageValue.stringValue
let featureFlagValue = remoteConfig.configValue(forKey: "new_feature_flag")
let isFeatureEnabled = featureFlagValue.boolValue
Swift'te bu değerlere erişmenin daha okunaklı ve kullanışlı bir yolu, Swift'in alt dize gösterimidir:
let remoteConfig = RemoteConfig.remoteConfig()
// Retrieve a string parameter value
let welcomeMessage = remoteConfig["welcome_message"].stringValue
// Retrieve a boolean parameter value
let isFeatureEnabled = remoteConfig["new_feature_flag"].boolValue
// Retrieve a number parameter value
let maxItemCount = remoteConfig["max_items"].numberValue.intValue
Tür açısından güvenli yapılandırma için Codable'ı kullanma
Daha karmaşık yapılandırmalar için Remote Config'daki yapılandırılmış verilerin kodunu çözmek üzere Swift'in Codable
protokolünü kullanabilirsiniz. Bu, tür açısından güvenli yapılandırma yönetimi sağlar ve karmaşık nesnelerle çalışmayı kolaylaştırır.
// Define a Codable struct for your configuration
struct AppFeatureConfig: Codable {
let isNewFeatureEnabled: Bool
let maxUploadSize: Int
let themeColors: [String: String]
}
// Fetch and decode the configuration
func configureAppFeatures() {
let remoteConfig = RemoteConfig.remoteConfig()
remoteConfig.fetchAndActivate { status, error in
guard error == nil else { return }
do {
let featureConfig = try remoteConfig["app_feature_config"].decoded(asType: AppFeatureConfig.self)
configureApp(with: featureConfig)
} catch {
// Handle decoding errors
print("Failed to decode configuration: \(error)")
}
}
}
Bu yöntem sayesinde:
- Karmaşık yapılandırma yapılarını tanımlayın.
- JSON yapılandırmalarını otomatik olarak ayrıştırın.
- Remote Config değerlerine erişirken tür güvenliğini sağlayın.
- Yapılandırılmış Remote Config şablonlarını işlemek için temiz ve okunabilir kod sağlayın.
SwiftUI'de açıklayıcı yapılandırma için mülk sarmalayıcıları kullanma
Mülk sarmalayıcılar, mülk tanımlarına özel davranış eklemenize olanak tanıyan güçlü bir Swift özelliğidir. SwiftUI'de durum, bağlamalar ve diğer özellik davranışlarını yönetmek için özellik sarmalayıcılar kullanılır. Daha fazla bilgi için Swift Dil Kılavuzu'na bakın.
struct ContentView: View {
@RemoteConfigProperty(key: "cardColor", fallback: "#f05138")
var cardColor
var body: some View {
VStack {
Text("Dynamic Configuration")
.background(Color(hex: cardColor))
}
.onAppear {
RemoteConfig.remoteConfig().fetchAndActivate()
}
}
}
SwiftUI'de Remote Config değerlerine erişmek için açıklayıcı bir yol istediğinizde @RemoteConfigProperty
mülk sarmalayıcısını kullanın. Bu sarmalayıcı, varsayılan değerler için yerleşik destek ve basitleştirilmiş yapılandırma yönetimi sunar.
4. Adım: Parametre değerlerini ayarlayın
Firebase konsolunu veya Remote Config arka uç API'lerini kullanarak, istediğiniz koşullu mantığa veya kullanıcı hedeflemesine göre uygulama içi değerleri geçersiz kılan yeni arka uç varsayılan değerleri oluşturabilirsiniz. Bu bölümde, bu değerleri oluşturmak için Firebase konsol adımlarında size yol gösterilir.
- Firebase konsolunda projenizi açın.
- Remote Config kontrol panelini görüntülemek için menüden Remote Config'i seçin.
- Uygulamanızda tanımladığınız parametrelerle aynı ada sahip parametreler tanımlayın. Her parametre için bir varsayılan değer (bu değer, uygulama içi varsayılan değeri geçersiz kılar) ve koşullu değerler de ayarlayabilirsiniz. Daha fazla bilgi için Remote Config Parametreleri ve Koşulları başlıklı makaleyi inceleyin.
Özel sinyal koşullarını kullanıyorsanız özellikleri ve değerlerini tanımlayın. Aşağıdaki örneklerde, özel sinyal koşulunun nasıl tanımlanacağı gösterilmektedir.
Swift
Task { let customSignals: [String: CustomSignalValue?] = [ "city": .string("Tokyo"), "preferred_event_category": .string("sports") ] do { try await remoteConfig.setCustomSignals(customSignals) print("Custom signals set successfully!") } catch { print("Error setting custom signals: \(error)") } }
Objective-C
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary *customSignals = @{ @"city": @"Tokyo", @"preferred_event_category": @"sports" }; [self.remoteConfig setCustomSignals:customSignals withCompletion:^(NSError * _Nullable error) { if (error) { NSLog(@"Error setting custom signals: %@", error); } else { NSLog(@"Custom signals set successfully!"); } }]; });
5. adım: Değerleri getirin ve etkinleştirin
Remote Config parametre değerlerini almak için fetchWithCompletionHandler:
veya fetchWithExpirationDuration:completionHandler:
yöntemini çağırın. Arka uçta ayarladığınız tüm değerler getirilir ve Remote Config nesnesine önbelleğe alınır.
Değerleri tek bir çağrıda almak ve etkinleştirmek istediğiniz durumlarda fetchAndActivateWithCompletionHandler:
değerini kullanın.
Bu örnekte, Remote Config arka ucundan değerler getirilir (önbelleğe alınmış değerler değil) ve uygulamanın kullanabilmesi için activateWithCompletionHandler:
çağrılır:
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); } }];
Güncellenen bu parametre değerleri uygulamanızın davranışını ve görünümünü etkilediği için alınan değerleri, kullanıcınızın sorunsuz bir deneyim yaşamasını sağlayacak bir zamanda (ör. kullanıcı uygulamanızı bir sonraki açışında) etkinleştirmeniz gerekir. Daha fazla bilgi ve örnek için Remote Config yükleme stratejilerine bakın.
6. Adım: Güncellemeleri anlık olarak dinleyin
Parametre değerlerini aldıktan sonra, Remote Config arka ucundan güncelleme dinlemek için gerçek zamanlı Remote Config kullanabilirsiniz. Güncellemeler kullanıma sunulduğunda bağlı cihazlara Remote Config anlık sinyal gönderir ve yeni bir Remote Config sürümü yayınladıktan sonra değişiklikleri otomatik olarak getirir.
Gerçek zamanlı güncellemeler, Apple platformları için Firebase SDK'sı v10.7.0 ve sonraki sürümler tarafından desteklenir.
Uygulamanızda, güncellemeleri dinlemeye başlamak ve yeni veya güncellenmiş parametre değerlerini otomatik olarak almak için
addOnConfigUpdateListener
işlevini çağırın. Aşağıdaki örnek, güncellemeleri dinler veactivateWithCompletionHandler
çağrıldığında güncellenmiş bir karşılama mesajı görüntülemek için yeni getirilen değerleri kullanır.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 uygulamanızın yeni bir sürümünü yayınladığınızda, uygulamanızı çalıştıran ve değişiklikleri dinleyen cihazlar tamamlama işleyicisini çağırır.
Kısıtlama
Bir uygulama kısa süre içinde çok fazla getirme işlemi yaparsa getirme çağrıları sınırlandırılır ve SDK FIRRemoteConfigFetchStatusThrottled
döndürür. SDK 6.3.0 sürümünden önce sınır 60 dakikalık bir zaman aralığında 5 getirme isteğiydi (yeni sürümlerde daha fazla izin verilen sınırlar vardır).
Uygulamanızı geliştirip test ederken hızlı bir şekilde iterasyon yapmanıza olanak tanımak için uygulama geliştirme sırasında önbelleği çok sık (saatte birkaç kez) yenilemek üzere daha sık getirmeyi tercih edebilirsiniz. Anlık Remote Config güncellemeleri,yapılandırma sunucu üzerinde güncellendiğinde önbelleği otomatik olarak atlar. Çok sayıda geliştiricinin bulunduğu bir projede hızlı iterasyon sağlamak için uygulamanıza minimum getirme aralığı (MinimumFetchInterval
) düşük bir FIRRemoteConfigSettings
mülkü geçici olarak ekleyebilirsiniz.
Remote Config için varsayılan ve önerilen üretim getirme aralığı 12 saattir. Bu, aslında kaç getirme çağrısı yapıldığından bağımsız olarak yapılandırmaların 12 saatlik bir zaman aralığında arka uçtan bir defadan fazla getirilmeyeceği anlamına gelir. Özellikle, minimum getirme aralığı aşağıdaki sırayla belirlenir:
fetch(long)
parametresiFIRRemoteConfigSettings.MinimumFetchInterval
parametresi- Varsayılan değer 12 saattir.
Sonraki adımlar
Henüz yapmadıysanız Remote Config kullanım alanlarını inceleyin ve aşağıdakiler gibi temel kavramlar ve gelişmiş strateji dokümanlarından bazılarına göz atın: