Я разрабатываю WatchOS Complication с типом graphicRectangular
. Что-то вроде яблочной активности или осложнения сердечного ритма. Эти обновления часто и отображают некоторые данные графика.
Мой график работает - показывает события календаря на временной шкале.
Я не могу обновить его "каждую минуту". Было бы неплохо установить маркер для фактического времени (проверьте скриншот) на графике шкалы времени. Но эта идея в основном пропала, так как я могу заставить обновлять график только 50 раз в день (как я прочитал). Apple просто говорит:
Если ваша сложность уже превысила выделенный ежедневный бюджет на время выполнения, вызовы этого метода ничего не делают.
Так что я ничего не могу сделать, правильно? Даже когда моя цель не отправить ее в AppStore и проверить ее?
Теперь я разработал функцию это проверяет, нужно ли обновлять текст (на скриншоте выше 13:00 Lorem Ipsum) или изменился ли график, и если это так, вызывает метод reloadTimeline()
. Так что не просто перезагружать его каждый раз, а только когда это необходимо. Но как мне вызвать эту функцию? Я пробовал в фоновом режиме задачи, но это проверяет только «когда он хочет» - я также строю повторяемый таймер 30 se c в ExtensionDelegate. Это также работает - но, кажется, работает только тогда, когда XCode запускает приложение. Если я остановлюсь в XCode, тогда график будет обновляться только каждые 15 минут или что-то в этом роде (возможно, фоновая задача).
Также я включил обозреватель EventKit для storeChanged (). Так что я могу перезагрузить график, если что-то изменилось в календаре. Это также хорошо работает и быстро цитируется при запуске приложения с активным XCode. Остановка приложения и использование его на часах «вне XCode», кажется, имеет большую задержку - иногда это никогда не срабатывает.
При открытии приложения (нажмите на усложнение) событие storeChanged()
запускается немедленно (я думаю, что это - эта функция - я не могу действительно отладить это, так как все, что связано с XCode, работает хорошо очень быстро) и после При закрытии приложения осложнение обновляется.
Есть ли причина, по которой событие storeChanged()
запускается очень быстро, а затем запускается через XCode, но крайне медленное / медленное / срабатывает только при открытии приложения, когда нет работает через XCode?
Есть ли причина, по которой мой таймер не запускается, когда не работает через XCode? При работе с XCode я вижу отладочные отпечатки в консоли из этих 30 "c проверок". Но это, похоже, ничего не делает при работе вне XCode. Просто редко обновляется осложнение.
Другой пример: сегодня утром, когда я надевал часы, график вчерашнего дня все еще был виден. Так что фоновая задача или таймер не работали в течение ночи. При открытии приложения (сложность нажатия) график немедленно обновляется.
Где находится правильное место для обозревателя EventKit или таймера? ExtensionDelegate
или ComplicationController
?