Я настраиваю тест AB, используя Firebase Remote Config, и пытаюсь заставить приложение напечатать значение в зависимости от того, в какую группу оно входит. Но значения не обновляются, даже если в нем указано, что значения имеютбыл найден
AppDelegate
:
var window: UIWindow?
var remoteConfig:RCValues!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
FirebaseApp.configure()
self.remoteConfig = RCValues.sharedInstance
return true
}
У меня есть файл RCValues
:
enum ValueKey: String {
case pricing
}
class RCValues {
static let sharedInstance = RCValues()
var loadingDoneCallback: (() -> ())?
var fetchComplete: Bool = false
private init() {
loadDefaultValues()
fetchCloudValues()
}
func loadDefaultValues() {
let appDefaults: [String: Any?] = [
ValueKey.pricing.rawValue: "Control"
]
RemoteConfig.remoteConfig().setDefaults(appDefaults as? [String: NSObject])
}
func fetchCloudValues() {
let fetchDuration: TimeInterval = 0
activateDebugMode()
RemoteConfig.remoteConfig().fetch(withExpirationDuration: fetchDuration) {
[weak self] (status, error) in
if let error = error {
print ("Uh-oh. Got an error fetching remote values \(error)")
return
}
RemoteConfig.remoteConfig().activateFetched()
print ("Retrieved values from the cloud!")
self?.fetchComplete = true
self?.loadingDoneCallback?()
}
}
func activateDebugMode() {
let debugSettings = RemoteConfigSettings(developerModeEnabled: true)
RemoteConfig.remoteConfig().configSettings = debugSettings
}
func string(forKey key: ValueKey) -> String {
return RemoteConfig.remoteConfig()[key.rawValue].stringValue ?? ""
}
}
Затем я использую значение pricing
, когда хочу проверить, чтогруппа, в которой находится пользователь:
let group = RCValues.sharedInstance.string(forKey: .pricing)
print("your group is: \(group)")
Но независимо от того, что я делаю, мне всегда приходится печатать «Control», что является значением по умолчанию, которое я установил в файле RCValues
для pricing
.Если я установлю что-то еще в этом файле, он напечатает это.
Что я делаю не так?