我认为以下代码每5分钟会请求一次新数据,但模拟器上没有更新。
func getNextRequestedUpdateDateWithHandler(handler: (NSDate?) -> Void) {
print("update")
handler(NSDate(timeIntervalSinceNow: NSTimeInterval(5*60))
}
我需要一些项目设置吗?
我已经使用Xcode 7.1.1和7.2 Beta 4
进行了测试答案 0 :(得分:3)
发生时您必须handle the scheduled update,否则ClockKit将停止要求新的时间轴条目:
在getNextRequestedUpdateDateWithHandler:方法返回的日期之后的某个时刻,ClockKit会启动并发症的预定更新。 预定更新不会自动延长您的时间表。相反,它们让您有机会让ClockKit知道您是否有数据添加到您的时间线。
在计划更新开始时,ClockKit会调用requestedUpdateDidBegin或requestedUpdateBudgetExhausted方法,具体取决于并发症的时间预算的状态。如果要将数据添加到时间线,则必须实现其中一个或两个方法。您对这些方法的实现应根据需要扩展或重新加载并发症的时间线。当您这样做时,ClockKit会从您的数据源请求新的时间轴条目。 如果您没有延长或重新加载时间线,ClockKit不会要求任何新的时间轴条目。
您的数据源可能缺少可选的requestedUpdateDidBegin
方法。这是一个示例,说明如何在更新发生时延长时间线:
// MARK: - Responding to Scheduled Updates
func requestedUpdateDidBegin() {
let server=CLKComplicationServer.sharedInstance()
for complication in server.activeComplications {
server.extendTimelineForComplication(complication)
}
}
请注意,最短更新间隔为10分钟,因此您不会按预期每5分钟调用一次。频繁更新也可能会耗尽您的更新预算。 Apple建议开发人员:
指定您可以管理的日期。不要让系统在几分钟内更新您的并发症。相反,提供持续数小时或一整天的数据。如果您的预算用尽,则在您的预算补充完毕之后才会进行下一次预定更新。