我正在创建一个从在线 API 提取其信息的天气应用程序。
我能够在 GlanceController 和 InterfaceController 中成功获取信息。但是,我有点不确定我应该如何处理并发症。我可以在 ComplicationController 类中执行网络请求吗?
如果是这样,我将如何去做?
我正在创建一个从在线 API 提取其信息的天气应用程序。
我能够在 GlanceController 和 InterfaceController 中成功获取信息。但是,我有点不确定我应该如何处理并发症。我可以在 ComplicationController 类中执行网络请求吗?
如果是这样,我将如何去做?
您将遇到与从复杂数据源中异步获取数据相关的问题,这主要是由于在时间线更新完成后接收到的数据。
Apple 建议您从应用程序的不同部分获取数据,并在任何复杂功能更新之前将其提供:
数据源类的工作是尽快为 ClockKit 提供任何请求的数据。您的数据源方法的实现应该是最少的。不要使用您的数据源方法从网络中获取数据、计算值或执行任何可能延迟该数据交付的事情。如果您需要为您的复杂功能获取或计算数据,请在您的 iOS 应用程序或您的 WatchKit 扩展的其他部分中执行此操作,并将数据缓存在您的复杂数据源可以访问它的位置。您的数据源方法唯一应该做的就是获取缓存的数据并将其放入 ClockKit 所需的格式。
其他接近它的方法:
更新并发症的最佳方法(在收到更新的天气数据后通过手机)是使用transferCurrentComplicationUserInfo
.
或者,您可以让您的手表应用程序或 Glance 缓存其最新的天气详细信息,以备下次预定更新时使用。
如果您绝对必须从并发症中处理它:
您可以让计划的时间线更新获取扩展以启动 NSURLSession 后台任务,以从您的天气服务异步下载信息。然后第一次(预定的)更新将结束,没有新数据。收到新的天气数据后,您可以执行第二次(手动)更新,以使用刚刚收到的数据重新加载并发症时间线。
我对这种方法没有任何个人经验,主要是因为不必要地需要背靠背时间线更新。