Сетевые запросы усложнения Apple Watch

Я создаю погодное приложение, которое извлекает информацию из онлайн-API.

Я могу успешно получить информацию в GlanceController и в InterfaceController. Тем не менее, я немного не уверен, как мне это сделать для усложнения. Могу ли я выполнить сетевой запрос в классе ComplicationController?

Если да, то как мне это сделать?


person glennbrann    schedule 30.04.2016    source источник


Ответы (1)


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

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

Задача вашего класса источника данных — как можно быстрее предоставить ClockKit любые запрошенные данные. Реализации ваших методов источника данных должны быть минимальными. Не используйте методы источника данных для извлечения данных из сети, вычисления значений или выполнения каких-либо действий, которые могут задержать доставку этих данных. Если вам нужно получить или вычислить данные для вашего усложнения, сделайте это в своем приложении iOS или в других частях вашего расширения WatchKit и кэшируйте данные в месте, где ваш источник данных усложнения может получить к ним доступ. Единственное, что должны делать ваши методы источника данных, — это брать кэшированные данные и помещать их в формат, требуемый ClockKit.

Другие способы приблизиться к этому:

  • Лучший способ обновить усложнение (с телефона после получения обновленных данных о погоде) — использовать transferCurrentComplicationUserInfo.

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

Если вам абсолютно необходимо справиться с этим из-за сложности:

Вы могли бы получить запланированное обновление временной шкалы, чтобы запустить фоновую задачу NSURLSession для асинхронной загрузки информации из вашей службы погоды. После этого первое (запланированное) обновление завершится без новых данных. После получения новых данных о погоде вы можете выполнить второе (вручную) обновление, чтобы перезагрузить временную шкалу осложнений, используя только что полученные данные.

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

person Community    schedule 01.05.2016