0

最初のViewController viewDidLoadにロードする次のコードがあります。最初は問題なく動作します。しかし、10 秒ごとに変更を探すべきではありませんか?

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
    }

これが更新されない理由はありますか?

4

1 に答える 1

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
    }
}
于 2016-12-30T05:39:11.377 に答える