Я хочу, чтобы мои осложнения обновлялись несколько раз в день. Обновление каждые 15 минут было бы очень хорошо. Я делаю вызовы API, давайте использовать http://worldclockapi.com/api/json/est/now для этого примера.
Я запутался в функциях, указанных в WatchOS. Используя NSLog, я обнаружил, что Часы продолжают звонить WKSnapshotRefreshBackgroundTask
каждые пару минут. Мне это не нужно часто, и эта функция, похоже, нацелена на обновление пользовательского интерфейса приложения, что мне не нужно.
Мне было бы хорошо, если бы WKApplicationRefreshBackgroundTask
запускался время от времени, чтобы сохранить результат в UserDefaults, так что getCurrentTimelineEntry()
, который, по-видимому, вызывается при отображении сложности, может напрямую читать данные оттуда. WKApplicationRefreshBackgroundTask
однако, в отличие от Snapshot
, не вызывается автоматически. Видимо, вы можете заставить его срабатывать примерно в определенное время, но я не уверен, что лучше всего делать это там. Я не заинтересован в получении данных в определенное время, я просто хочу, чтобы система заставляла приложение получать новые данные с разумной частотой.
Я также думал о том, чтобы использовать getCurrentTimelineEntry
для запуска моего httprequests
, только если прошло более 30 минут с момента последнего запроса (для экономии батареи). Тем не менее, getCurrentTimelineEntry
, кажется, не вызывается, если сложность скрыта / не отображается прямо сейчас, поэтому, если пользователь должен был надеть часы утром, он будет показывать данные с прошлой ночи, а не с этого утра.
Должен ли я угнать WKSnapshotRefreshBackgroundTask
для этого? Как вы можете сказать, я сейчас немного углубился в это, но я до сих пор не знаю, куда идти дальше. Возможно, это что-то действительно простое, но на данный момент для меня нет очевидного пути.