WatchOS 2并发症预定更新在后台

时间:2015-09-29 14:49:23

标签: ios objective-c swift watch-os-2 apple-watch-complication

所以,经过如此多的测试和在线研究后,我不得不放弃并寻求帮助。 WatchOS 2并发症。

所以我试图创建一个基本的复杂功能,显示更新时的时间。

我知道后台更新是预算的,所以我试图每10分钟更新一次。希望收集NSDate很简单,这不会导致我超出预算。这意味着什么。

我现在无视时间旅行并提供时间表。相反,我只是用当前时间填写大模块模板:

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方法而不是其他方法。

我显然缺少任何建议或任何建议?非常感谢阅读。

1 个答案:

答案 0 :(得分:2)

我认为你需要实施:

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)
}