FIRRemoteConfig.activateFetched() завершается ошибкой

Я реализовал FIRRemoteConfig и добавил свое первое значение в консоль Firebase. Однако, когда я пытаюсь активировать извлеченные значения, это терпит неудачу, и мое удаленное значение никогда не доступно.

    let remote = FIRRemoteConfig.remoteConfig()
    #if DEBUG
        let expiration: TimeInterval = 0
        remote.configSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
    #else
        let expiration: TimeInterval = 24*60*60
    #endif

    var map = [String:NSObject]()
    let defaults = RemoteSettings.defaults.keys
    for key in defaults.keys {
        map[key.rawValue] = defaults[key] as? NSObject
    }
    remote.setDefaults(map) // Have confirmed that map is valid here

    remote.fetch(withExpirationDuration: expiration, completionHandler: { (status, error) in
        // status always == .success, but remote.activateFetched() always returns false.
        if status == .success && remote.activateFetched() {
            print("applied remote settings")
        } else {
            print("failed to apply remote settings: \(error)")
        }
    })

2 ответа

Я разобрался после многих проб и ошибок. Проблема со значением срока действия, установите значение срока действия равным 0 секунд, чтобы увидеть немедленные результаты в силу!

Я надеюсь, что это может сэкономить много времени для других, ребята!

Как отметил @Sunil Phani Manne, использование метода со значением expiration действительно работает и заставляет remoteConfig немедленно активироваться.

    self.remoteConfig?.fetch(withExpirationDuration: 0.0, completionHandler: { (status, error) in
        let result = self.remoteConfig?.activateFetched()
        print(result)
    })

С помощью remote.activateFetched() не удается, но с помощью FIRRemoteConfig.remoteConfig().activateFetched() успешно. Возможно, Google хочет, чтобы мы использовали remoteConfig() каждый раз, а не держась за конкретный экземпляр.

Кроме того, при просмотре документации упоминается, что это на самом деле не удастся, если выбранные параметры уже были применены ранее.

Возвращает false, если не найдена извлеченная конфигурация, или извлеченная конфигурация уже была активирована.

Другие вопросы по тегам