#watchkit #watchos #apple-watch-complication #clockkit #watchos-5
#watchkit #watchos #apple-watch-усложнение #clockkit #watchos-5
Вопрос:
У меня возникла сложность, которую время от времени необходимо обновлять путем извлечения данных с сервера.
Я пытаюсь извлечь данные из часов. Я делаю это, планируя WKRefreshBackgroundTask
. Когда запускается эта задача, я запускаю сеанс URL для извлечения некоторых данных JSON с сервера.
После успешной выборки данных я завершаю, WKApplicationRefreshBackgroundTask
вызывая его setTaskCompletedWithSnapshot(false)
.
Кажется, что все это работает нормально, однако я бы предпочел создать WKURLSessionRefreshBackgroundTask
after WKApplicationRefreshBackgroundTask
, чтобы загрузить его в фоновом режиме и тратить меньше времени на фоновые задачи. Я думаю, что это невозможно, я не загружаю файлы. Если я правильно понимаю, WKURLSessionRefreshBackgroundTask
с a URLSessionConfiguration.background(withIdentifier:)
можно использовать только a для URLSessionUploadTask
s или URLSessionDownloadTask
s, поэтому мне пришлось забыть об этой идее. (Пожалуйста, поправьте меня, если я это неправильно понял).
Теперь самая большая проблема, с которой я сталкиваюсь, заключается в том, что когда часы заблокированы (сняты с запястья, надеты на зарядную шайбу и т.д.), Запросы URL не выполняются. И, таким образом, данные не были обновлены. Как мы должны с этим справиться? Компиляция активности просто отключается, когда часы блокируются, и как только вы разблокируете часы, они перезагружаются. Можем ли мы что-нибудь сделать, чтобы понять, что часы заблокированы / разблокированы?
Правильный ли это вообще подход для извлечения данных из часов с помощью WKApplicationRefreshBackgroundTask
, или лучше разбудить телефон и заставить его запросить данные с помощью WatchConnectivity
? И если да: какие WCSessionDelegate
функции вы бы использовали для достижения этого?
Если необходимо выполнить выборку данных непосредственно из часов: могу ли я установить для WKApplicationRefreshBackgroundTask
значение завершено до завершения запроса или мне следует подождать до завершения запроса? (т.Е. в какой момент времени следует WKApplicationRefreshBackgroundTask.setTaskCompletedWithSnapshot()
вызвать).
Я прочитал множество статей и просмотрел несколько видеороликов. И все же мне очень сложно найти правильную архитектуру для извлечения данных компиляции с сервера и обеспечения надежной работы.
Надеюсь, кто-нибудь сможет пролить немного света на этот вопрос.
Комментарии:
1. Вы когда-нибудь понимали это? Вокруг WKURLSessionRefreshBackgroundTask возникает множество вопросов без каких-либо решений.