2016-12-30 5 views
0

У меня есть следующий код, который загружается в начальный ViewController viewDidLoad. Сначала он работает нормально. Но разве он не должен искать изменения каждые 10 секунд?Удаляет ли Firebase RemoteConfig выборку?

Когда я делаю обновление для значения конфигурации в Firebase и публикую, я не вижу, чтобы это произошло в приложении. Я работаю в режиме отладки, поэтому дросселирование не является проблемой.

Если я перезапущу приложение, я вижу новое значение. Поскольку интервал установлен в 10 секунд, не должен ли я видеть обновление во время работы приложения?

let rc = FIRRemoteConfig.remoteConfig() 

let interval: TimeInterval = 10 
    FIRRemoteConfig.remoteConfig().fetch(withExpirationDuration: interval) { 
     (status, error) in 

     guard error == nil else { 
      //handle error here 
      return 
     } 

     FIRRemoteConfig.remoteConfig().activateFetched() 
     let test = rc["key1"].stringValue //this runs only once 
    } 

Любые идеи, почему это не обновление?

ответ

1

Вместо этого вы должны использовать scheduledTimer.

/// Fetches Remote Config data and sets a duration that specifies how long config data lasts. 
    /// Call activateFetched to make fetched data available to your app. 
    /// @param expirationDuration Duration that defines how long fetched config data is available, in 
    ///       seconds. When the config data expires, a new fetch is required. 
    /// @param completionHandler Fetch operation callback. 
    open func fetch(withExpirationDuration expirationDuration: TimeInterval, completionHandler: FirebaseRemoteConfig.FIRRemoteConfigFetchCompletion? = nil) 

fetch(withExpirationDuration: interval) является извлечение данных с тайм-аута, то есть ваш интервал.

let interval: TimeInterval = 10 
Timer.scheduledTimer(timeInterval: interval, 
         target: self, 
         selector: #selector(updateConfig), 
         userInfo: nil, 
         repeats: true) 

func updateConfig() { 
    let rc = FIRRemoteConfig.remoteConfig() 

    FIRRemoteConfig.remoteConfig().fetch { (status, error) in 
     guard error == nil else { 
     //handle error here 
     return 
     } 

     FIRRemoteConfig.remoteConfig().activateFetched() 
     let test = rc["key1"].stringValue //this runs only once 
    } 
} 
+0

"expirationDuration. Длительность, которая определяет, как долго доступны данные конфигурации, в секундах". expirationDuration - как долго он кэширует полученные данные. Это не сетевой тайм-аут. – user3296487