Обновление усложнения Apple Watch путем извлечения данных с помощью запроса URL

#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 возникает множество вопросов без каких-либо решений.