我正在尝试在自己的手表扩展程序中使用URLRequest.CachePolicy.useProtocolCachePolicy
,但是每个请求都失败,并显示“无法从网络加载”错误。
我看到了以下答案:
NSURLErrorDomain Code=-2000 "can’t load from network"
但是我想要做的是使用有效的或请求策略的缓存。最好的选择是使用reloadRevalidatingCacheData
,但尚未实现。
@constant NSURLRequestReloadRevalidatingCacheData指定 如果源来源,则可以使用现有的缓存数据 确认其有效性,否则将从 原始来源。未实现。
在iOS中,useProtocolCachePolicy
与reloadRevalidatingCacheData
的工作原理非常相似。
https://developer.apple.com/documentation/foundation/nsurlrequest/cachepolicy/useprotocolcachepolicy
但是在使用useProtocolCachePolicy
策略的watchOS中,请求失败。顺便说一下,它与reloadIgnoringLocalCacheData
一起工作。
我不是在发出HTTP或HTTPS字节范围请求,因此好像useProtocolCachePolicy
可以像iOS一样工作,但不能。
唯一的方法似乎是手动实现缓存,但是我想知道为什么它不起作用,并且对于此问题有任何现成的选项。
答案 0 :(得分:0)
我从苹果公司那里得到了关于这个问题的答案。
手表应用程序往往会非常迅速地被暂停,因此我们建议开发人员使用后台url会话,以确保在发生诸如后台或暂停之类的事件时,他们的api调用仍然可以执行。
如果任何人想使用.useProtocolCachePolicy策略,请使用后台配置。
let configuration = URLSessionConfiguration.background(withIdentifier: "xxx.xxx.xxxxx")
let session = URLSession(configuration: configuration)