想知道我们如何在watchOS 2中使用NSURLSession后台任务。
我想在出现并发症时产生背景下载。我不清楚的是我会找到application:handleEventsForBackgroundURLSession
。
WatchKit扩展程序的哪个部分会被唤醒,我将在哪里获得此回调?这部分在文档中不是很清楚。
答案 0 :(得分:2)
我想在出现并发症时产生背景下载。
如果您希望在并发症控制器中异步获取数据,则会发现it is unreliable, as well as discouraged。
为避免不必要地耗尽您的并发症的执行时间预算,您可能需要考虑让手机处理后台获取,然后使用WCSession
实例transferCurrentComplicationUserInfo
。这将发送一条高优先级消息,该消息将唤醒您的分机以传送数据。
此时,您要么:
等待复杂控制器的预定更新发生,或
通过致电reloadTimelineForComplication
或extendTimelineForComplication
手动发信号通知ClockKit更新您的并发症。
您可以在更新并发症数据下的watchOS 2 Transition Guide中找到具体的详细信息。
通过扩展程序进行显式手动更新
当你有复杂的新数据时,必须使用CLKComplicationServer对象的reloadTimelineForComplication:或extendTimelineForComplication:方法向ClockKit发信号通知你的并发症已准备好更新。 ...调用这些方法会导致ClockKit创建数据源对象并从中请求新数据。
通过并发控制器requestedUpdateDidBegin
预定更新对于数据在可预测时间发生变化的应用非常有用。当发生预定更新时,ClockKit首先调用数据源的requestedUpdateDidBegin或requestedUpdateBudgetExhausted方法。使用这些方法确定您是否有新数据可用。
通过WKExtensionDelegate
didReceiveRemoteNotification
通过WCSession
transferCurrentComplicationUserInfo
当您的iOS应用收到针对您的复杂功能的更新数据时,它可以使用Watch Connectivity框架立即更新您的复杂功能。 WCSession的transferCurrentComplicationUserInfo:方法向WatchKit扩展发送高优先级消息,根据需要将其唤醒以传递数据。收到数据后,根据需要延长或重新加载时间线,以强制ClockKit从您的数据源请求新数据。
无论哪种方式,并发症控制器应该只使用可用的新数据,而不是尝试(异步)获取它需要的任何数据。