WatchOS 2 并发症计划在后台更新
WatchOS 2 Complication Scheduled Update In Background
所以,经过如此多的测试和在线研究,我不得不放弃并寻求帮助。 WatchOS 2 并发症。
所以我正在尝试创建一个显示更新时间的基本复杂功能。
我知道后台更新是有预算的,所以我尝试每 10 分钟更新一次时间。希望收集 NSDate 很简单,这不会让我去 'over budget' 那意味着什么。
我暂时忽略时间旅行并提供时间线。相反,我只是用当前时间填写大型模块模板:
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimelineEntry?) -> Void) {
然后我有这个:
func getNextRequestedUpdateDateWithHandler(handler: (NSDate?) -> Void){
handler(NSDate(timeIntervalSinceNow: 60*10));
}
还有这个:
func requestedUpdateDidBegin(){
NSLog("requestedUpdateDidBegin")
let complicationServer = CLKComplicationServer.sharedInstance()
for complication in complicationServer.activeComplications {
complicationServer.reloadTimelineForComplication(complication)
}
}
虽然从未发生过更新。
只有启动扩展程序和 运行 与上面 4 行相同的代码,我才能更新并发症。
通过查看日志,强制更新后发生的所有事情都是调用方法 getNextRequestedUpdateDateWithHandler,但没有别的。
有什么建议或我明显遗漏的任何东西吗?非常感谢阅读。
我认为您需要实施:
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void))
您实现的方法getTimelineEntriesForComplication(complication: CLKComplication, beforeDate...
仅在复杂服务器收集时间线条目以进行前向时间旅行时调用。
鉴于您描述的场景,我强烈建议通过实施支持前向时间旅行:
func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) -> Void) {
handler([.Forward])
}
和
func getTimelineEndDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
let date: NSDate = // Your date
handler(date)
}
所以,经过如此多的测试和在线研究,我不得不放弃并寻求帮助。 WatchOS 2 并发症。
所以我正在尝试创建一个显示更新时间的基本复杂功能。
我知道后台更新是有预算的,所以我尝试每 10 分钟更新一次时间。希望收集 NSDate 很简单,这不会让我去 'over budget' 那意味着什么。
我暂时忽略时间旅行并提供时间线。相反,我只是用当前时间填写大型模块模板:
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimelineEntry?) -> Void) {
然后我有这个:
func getNextRequestedUpdateDateWithHandler(handler: (NSDate?) -> Void){
handler(NSDate(timeIntervalSinceNow: 60*10));
}
还有这个:
func requestedUpdateDidBegin(){
NSLog("requestedUpdateDidBegin")
let complicationServer = CLKComplicationServer.sharedInstance()
for complication in complicationServer.activeComplications {
complicationServer.reloadTimelineForComplication(complication)
}
}
虽然从未发生过更新。 只有启动扩展程序和 运行 与上面 4 行相同的代码,我才能更新并发症。 通过查看日志,强制更新后发生的所有事情都是调用方法 getNextRequestedUpdateDateWithHandler,但没有别的。
有什么建议或我明显遗漏的任何东西吗?非常感谢阅读。
我认为您需要实施:
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void))
您实现的方法getTimelineEntriesForComplication(complication: CLKComplication, beforeDate...
仅在复杂服务器收集时间线条目以进行前向时间旅行时调用。
鉴于您描述的场景,我强烈建议通过实施支持前向时间旅行:
func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) -> Void) {
handler([.Forward])
}
和
func getTimelineEndDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
let date: NSDate = // Your date
handler(date)
}