ClockKit когда / где обновлять данные, загруженные в фоновом режиме - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу, чтобы мои осложнения обновлялись несколько раз в день. Обновление каждые 15 минут было бы очень хорошо. Я делаю вызовы API, давайте использовать http://worldclockapi.com/api/json/est/now для этого примера.

Я запутался в функциях, указанных в WatchOS. Используя NSLog, я обнаружил, что Часы продолжают звонить WKSnapshotRefreshBackgroundTask каждые пару минут. Мне это не нужно часто, и эта функция, похоже, нацелена на обновление пользовательского интерфейса приложения, что мне не нужно.

Мне было бы хорошо, если бы WKApplicationRefreshBackgroundTask запускался время от времени, чтобы сохранить результат в UserDefaults, так что getCurrentTimelineEntry(), который, по-видимому, вызывается при отображении сложности, может напрямую читать данные оттуда. WKApplicationRefreshBackgroundTask однако, в отличие от Snapshot, не вызывается автоматически. Видимо, вы можете заставить его срабатывать примерно в определенное время, но я не уверен, что лучше всего делать это там. Я не заинтересован в получении данных в определенное время, я просто хочу, чтобы система заставляла приложение получать новые данные с разумной частотой.

Я также думал о том, чтобы использовать getCurrentTimelineEntry для запуска моего httprequests, только если прошло более 30 минут с момента последнего запроса (для экономии батареи). Тем не менее, getCurrentTimelineEntry, кажется, не вызывается, если сложность скрыта / не отображается прямо сейчас, поэтому, если пользователь должен был надеть часы утром, он будет показывать данные с прошлой ночи, а не с этого утра.

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

...