Firebase Remote Config не обновляет значения? - PullRequest
0 голосов
/ 08 июня 2019

Я настраиваю тест 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.Если я установлю что-то еще в этом файле, он напечатает это.

Что я делаю не так?

1 Ответ

0 голосов
/ 11 июня 2019

Вы ничего не делаете после получения значения от firebase.Добавьте функцию после завершения выборки и напечатайте новое значение.Я думаю, что вы ничего не делаете после получения новых значений.

...