【问题标题】:Apple Watch complication network requestsApple Watch 复杂网络请求
【发布时间】:2016-04-30 17:38:58
【问题描述】:

我正在创建一个从在线 API 提取信息的天气应用程序。

我能够在 GlanceController 和 InterfaceController 中成功获取信息。但是,我有点不确定我应该如何处理并发症。我可以在 ComplicationController 类中执行网络请求吗?

如果是这样,我该怎么做?

【问题讨论】:

    标签: watchkit watchos-2 weather apple-watch-complication clockkit


    【解决方案1】:

    您会遇到issues related to asynchronously fetching data from within the complication data source,主要是因为在时间线更新完成之后收到了数据。

    苹果推荐你fetch the data from a different part of your app, and have it available in advance of any complication update:

    数据源类的工作是尽快为 ClockKit 提供任何请求的数据。您的数据源方法的实现应该是最少的。不要使用您的数据源方法从网络中获取数据、计算值或执行任何可能延迟该数据交付的事情。如果您需要为您的复杂功能获取或计算数据,请在您的 iOS 应用程序或您的 WatchKit 扩展的其他部分中执行此操作,并将数据缓存在您的复杂数据源可以访问它的位置。您的数据源方法唯一应该做的就是获取缓存的数据并将其放入 ClockKit 所需的格式。

    其他方法:

    • 更新并发症的最佳方式(在收到更新的天气数据后通过手机)是使用transferCurrentComplicationUserInfo

    • 或者,您可以让您的手表应用程序或 Glance 缓存其最近的天气详细信息,以备下次计划更新时使用。

    如果你绝对必须从并发症中处理它:

    您可以让计划的时间线更新获取扩展程序以启动 NSURLSession 后台任务,以从您的天气服务异步下载信息。然后第一次(预定的)更新将结束,没有新数据。收到新的天气数据后,您可以执行第二次(手动)更新,以使用刚刚收到的数据重新加载并发症时间线。

    我对这种方法没有任何个人经验,主要是因为不必要地需要连续更新时间线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2017-11-22
      相关资源
      最近更新 更多