ios - WatchOS 2 并发症计划在后台更新

标签 ios objective-c swift watchos-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,但没有别的。

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

最佳答案

我认为您需要实现:

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

关于ios - WatchOS 2 并发症计划在后台更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847124/

相关文章:

arrays - 解析多个 JSON 对象

iOS:UIButton 标题阴影颜色不起作用

ios - 我的 App 被 AppStore 拒绝的原因是什么?

ios - Swift 如何在 AnyObject 数组中查找对象

ios - 与 watch 套件扩展和 iPhone 应用程序通信

ios - 转发选定的类以在另一个类中使用

ios - UIBarButtonItem 已禁用,但颜色正常

ios - 线程 1 : Fatal error: NSArray element failed to match the Swift Array Element type

ios - 导航栏中的按钮图像被拉伸(stretch)

swift - 以编程方式固定宽度,动态高度 UILabel?