watchOS - Показывать данные об отправлении в реальном времени об осложнениях

У меня есть приложение для общественного транспорта с данными об отправлении поездов в реальном времени. Хочу добавить усложнение, которое показывает время отправления следующего поезда.

Можно ли отображать (или обновлять) данные об осложнении в реальном времени? Например, показ «3 мин. До станции X». Данные могут меняться каждую минуту в зависимости от информации, поступающей из API общественного транспорта.

Как мне сделать это на watchOS 2 или watchOS 3?

Я знаю, что приложение ETA показывает время в пути в усложнении, но не знаю, как им это удается.


person Bram    schedule 14.06.2016    source источник


Ответы (1)


Возможны ли обновления в реальном времени?

  • # P1 #
    # P2 #
  • # P3 #
    # P4 #
  • # P5 #
    # P6 #

Как усложнение может отображать относительное время?

  • # P7 #
    # P8 #

Как можно часто обновлять усложнение?

  • Вы можете использовать принудительное обновление усложнения (либо с удаленного сервера, либо локально с телефона в iOS 10).

    Существует ограничение на 50 push-обновлений усложнений в день.

  • Вы можете получить данные по телефону и использовать transferCurrentComplicationUserInfo.

    В watchOS 2 это зависело только от дневного бюджета. В watchOS 3 это ограничение теперь составляет 50 переводов в день.

    См. Подходит ли transferCurrentComplicationUserInfo для обновления осложнений? для получения дополнительных сведений.

  • В watchOS 2 вы можете использовать getNextRequestedUpdateDate, чтобы запланировать следующее обновление ваше осложнение.

    Это не может происходить чаще, чем каждые десять минут.

    Обратите внимание, что приложения watchOS 3 должны быть обновлены для использования задач фонового обновления приложений. Основное преимущество заключается в том, что фоновые задачи могут делать больше, чем просто обновлять ваше усложнение. Они также могут обрабатывать выборку данных, обновлять вашу модель после поступления данных, а также обновлять моментальный снимок док-станции.

  • Наконец, вы можете запланировать обновление вручную. В watchOS 3 для этого рекомендуется использовать задачу фонового обновления приложения.

    Бюджет задачи позволяет 4 задачи в час. Подробнее см. scheduleBackgroundRefresh.

    Обратите внимание, что задачи приложения фонового обновления не должны использовать более 10% ЦП.

Рекомендуемые сессии WWDC 2016

  • 208 Что нового в watchOS 3 знакомит с некоторыми из этих тем.

  • 804 обсуждает, когда и зачем обновлять приложения для часов.

  • 218 Обновление приложения для часов содержит подробные сведения об использовании фоновых задач для обновления. ваше усложнение, приложение и снимок док-станции.

Как упоминалось в ходе переговоров, вы должны планировать свои обновления примерно на то время, когда они могут понадобиться.

Для вашего варианта использования примеры могут быть только тогда, когда работает общественный транспорт, и только тогда, когда на регулярное время отправления может повлиять задержка.

Пример кода Apple

Apple предоставляет пример кода WatchBackgroundRefresh, демонстрирующий, как использовать WKRefreshBackgroundTask для обновления приложений WatchKit в фоновом режиме.

Чтобы обновить любое активное осложнение в фоновой задаче, вы должны просто добавить код для перезагрузки (или расширения) временной шкалы:

let complicationServer = CLKComplicationServer.sharedInstance()

for complication in activeComplications {
    complicationServer.reloadTimelineForComplication(complication)
} 
person Community    schedule 15.06.2016
comment
Использование фонового обновления по-прежнему превышает дневной лимит, верно? - person Iulian Onofrei; 28.12.2017