У меня возникли сложности, которые необходимо время от времени обновлять, получая данные с сервера.
Я пытаюсь получить данные из Watch.Я делаю это, планируя WKRefreshBackgroundTask
.Когда запускается эта задача, я запускаю сеанс URL для получения некоторых данных JSON с сервера.
После того, как данные были успешно извлечены, я завершаю WKApplicationRefreshBackgroundTask
, вызывая его setTaskCompletedWithSnapshot(false)
.
Кажется, что все это работает нормально, но я бы лучше создалWKURLSessionRefreshBackgroundTask
после WKApplicationRefreshBackgroundTask
, чтобы загрузить его в фоновом режиме и тратить меньше времени на фоновые задачи.Я думаю, что это невозможно, я не загружаю и не загружаю файлы.Если я правильно понимаю, WKURLSessionRefreshBackgroundTask
с URLSessionConfiguration.background(withIdentifier:)
можно использовать только для URLSessionUploadTask
с или URLSessionDownloadTask
с, поэтому мне пришлось забыть об этой идее.(Пожалуйста, исправьте меня, если я неправильно понял).
Теперь самая большая проблема, с которой я сталкиваюсь, заключается в том, что когда часы заблокированы (сняты с запястья, надеты зарядная шайба и т. Д.), Запросы URL не являютсявыполняется.И, таким образом, данные не были обновлены.Как мы должны иметь дело с этим?Компиляция действий просто темнеет, когда часы блокируются, и как только вы разблокируете часы, они перезагружаются.Что мы можем сделать, чтобы понять, что Часы заблокированы / разблокированы?
Это даже правильный подход для извлечения данных из Часов с помощью WKApplicationRefreshBackgroundTask
, или лучше разбудить телефон и заставить телефон запрашивать данные с помощью WatchConnectivity
?И если так: какие функции WCSessionDelegate
вы бы использовали для достижения этой цели?
Если путь извлечения данных непосредственно из Watch является подходящим способом: могу ли я установить WKApplicationRefreshBackgroundTask
как завершенный до завершения запросаили я должен подождать, пока запрос не будет выполнен?(т. е. в какой момент времени следует вызывать WKApplicationRefreshBackgroundTask.setTaskCompletedWithSnapshot()
).
Я читал множество статей и смотрел несколько видео.Тем не менее, мне все еще очень трудно найти правильную архитектуру для получения данных компиляции с сервера и получить эту надежную работу.
Надеюсь, кто-то может пролить немного света на этот вопрос.