3

所以,经过这么多的测试和在线研究,我不得不放弃并寻求帮助。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 方法,但没有别的。

有什么建议或我显然遗漏的任何东西吗?非常感谢您的阅读。

4

1 回答 1

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)
}
于 2015-10-05T04:57:07.933 回答