0

Я хотел бы условно перезагрузить мое активное усложнение в функции requestedUpdateDidBegin или на самом деле сообщить ClockKit, чтобы установить следующую проверку за 15 минут до конца текущей записи временной шкалы, но как я могу это сделать, не зная, что находится в текущем осложнении?Получить запись временной шкалы и шаблон, используемый для активного усложнения?

Вот что я пытаюсь сделать:

if let complications = CLKComplicationServer.sharedInstance().activeComplications { 
     for item in complications { 
      // Get timeline entry and template used? 
     } 
    } 

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

+0

Я пытаюсь обновить кольцо для текущего осложнения. Поэтому на самом деле я хотел бы получить текущую запись временной шкалы и обновить ее за 15 минут до ее истечения. В противном случае кольцо становится устаревшим довольно быстро и может обновлять его только каждые 30 минут. Было бы неплохо, если бы я мог заполнить фракцию заполнения, например, относительной датой. Мое усложнение почти похоже на таймер, отображаемый в виде кольца. – TruMan1

+0

К сожалению, нет поддержки относительной доли заполнения. [Feature request it.] (Https://bugreport.apple.com/) Но если вы только предоставляете 'getCurrentTimelineEntryForComplication', вы можете (используйте минимальный 10-минутный запланированный интервал обновления, чтобы сохранить его несколько свежим, или) запланировать обновление, как объяснено в ответе, путем смещения даты текущей записи. –

+0

Спасибо за объяснения и подход, текущая функция временной шкалы будет работать, как вы упомянули. Тем временем я заполнил запрос функции. – TruMan1

ответ

1

The complication server запрашивает данные у вашего контроллера осложнений, но он не предназначен для предоставления ему данных временной шкалы. Все, что вы можете узнать на сервере, - это самые ранние и последние даты путешествия.

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

Что касается планирования вашего обновления за 15 минут до конца последней записи, вы можете очень легко запланировать это как часть предыдущего запроса. Самое последнее, что запрашивает сервер усложнения (после перезагрузки или продления временной шкалы), - это следующая дата обновления.

Поскольку сервер осложнения только просил вас для будущих записей временной шкалы в getTimelineEntriesForComplication:afterDate:, вы можете сделать к сведению даты последней записи в временных шкалах, смещение его на 15 минут, а затем возвращает эту новую дату когда getNextRequestedUpdateDateWithHandler моментально будет вызываться.

Смежные вопросы