Есть ли способ использовать `useProtocolCachePolicy` в watchOS? - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь использовать URLRequest.CachePolicy.useProtocolCachePolicy в своем расширении часов, но каждый запрос завершается с ошибкой «не удается загрузить из сети».

Я видел ответ ниже:

NSURLErrorDomain Code = -2000 "невозможно загрузить из сети"

, но я хочу использовать кэшированный, если он действителен, или политику запроса.Лучше всего использовать reloadRevalidatingCacheData, но он не был реализован.

@ constant NSURLRequestReloadRevalidatingCacheData Указывает, что существующие данные кэша могут использоваться при условии, что источник источника подтверждает их действительность, в противном случае URL-адрес являетсязагружен из исходного источника.Не реализовано.

В iOS useProtocolCachePolicy работает очень похоже с reloadRevalidatingCacheData.

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

Но запросы в watchOS не работают с useProtocolCachePolicy политика.Кстати, он работал с reloadIgnoringLocalCacheData.

Я не делаю HTTP или HTTPS запрос диапазона байтов, поэтому кажется, что useProtocolCachePolicy работает как iOS, но это не так.

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

1 Ответ

0 голосов
/ 15 июля 2019

Я получил ответ от Apple об этой проблеме.

Просмотр приложений, как правило, очень быстро приостанавливается, поэтому мы рекомендуем разработчикам использовать фоновую сессию URL, чтобы гарантировать, что их вызовы API все еще выполняются в случаепроисходит событие, такое как фон или приостановка.

Если кто-то хочет использовать политику .useProtocolCachePolicy, используйте фоновую настройку.

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