如何在Firebase RemoteConfig提取请求上添加超时?

cmi*_*mii 4 timeout ios firebase swift firebase-remote-config

我在我的应用程序中使用Firebase远程配置功能。我需要在获取请求上添加网络超时。

#if DEBUG
let expirationDuration: TimeInterval = 0
RemoteConfig.remoteConfig().configSettings = RemoteConfigSettings(developerModeEnabled: true)
#else
let expirationDuration: TimeInterval = 3600
#endif

RemoteConfig.remoteConfig().fetch(withExpirationDuration: expirationDuration) {
    [weak self] (status, error) in

    guard error == nil else {
        print ("Uh-oh. Got an error fetching remote values \(String(describing: error))")
            return
        }

    RemoteConfig.remoteConfig().activateFetched()

    self?.fetchComplete = true
    self?.loadingDoneCallback?()
}
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

And*_*rea 6

fetchTimeout初始化时可以使用一个设置FIRRemoteConfig.configSettings

文档和详细信息在这里


nik*_*ano 5

您可以使用计时器解决此问题:

  remoteConfigTimer = Timer.scheduledTimer(withTimeInterval: 10,
                                                 repeats: false) {
                                                    timer in
                                                    self.remoteConfigTimerExpired = true
                                                    self.loadingDoneCallback()
  }
Run Code Online (Sandbox Code Playgroud)

在这里,您将超时定义为Timer的timeInterval,一旦到达此计时器,您只需执行与RemoteConfig调用成功时将执行的相同的方法即可。

请注意,这仅适用于iOS 10或更高版本。

  • 不错的解决方案,但是我会在远程配置获取回调中添加`remoteConfigTimer .invalidate()`,以防止计时器在获取成功时触发错误。 (2认同)