有没有办法在watchOS中使用“ useProtocolCachePolicy”?

时间:2019-07-03 20:46:23

标签: swift cache-control watch-os

我正在尝试在自己的手表扩展程序中使用URLRequest.CachePolicy.useProtocolCachePolicy,但是每个请求都失败,并显示“无法从网络加载”错误。

我看到了以下答案:

NSURLErrorDomain Code=-2000 "can’t load from network"

但是我想要做的是使用有效的或请求策略的缓存。最好的选择是使用reloadRevalidatingCacheData,但尚未实现。

  

@constant NSURLRequestReloadRevalidatingCacheData指定   如果源来源,则可以使用现有的缓存数据   确认其有效性,否则将从   原始来源。未实现。

在iOS中,useProtocolCachePolicyreloadRevalidatingCacheData的工作原理非常相似。

https://developer.apple.com/documentation/foundation/nsurlrequest/cachepolicy/useprotocolcachepolicy

但是在使用useProtocolCachePolicy策略的watchOS中,请求失败。顺便说一下,它与reloadIgnoringLocalCacheData一起工作。

我不是在发出HTTP或HTTPS字节范围请求,因此好像useProtocolCachePolicy可以像iOS一样工作,但不能。

唯一的方法似乎是手动实现缓存,但是我想知道为什么它不起作用,并且对于此问题有任何现成的选项。

1 个答案:

答案 0 :(得分:0)

我从苹果公司那里得到了关于这个问题的答案。

  

手表应用程序往往会非常迅速地被暂停,因此我们建议开发人员使用后台url会话,以确保在发生诸如后台或暂停之类的事件时,他们的api调用仍然可以执行。

如果任何人想使用.useProtocolCachePolicy策略,请使用后台配置。

let configuration = URLSessionConfiguration.background(withIdentifier: "xxx.xxx.xxxxx")
let session = URLSession(configuration: configuration)