我有一个公共交通应用程序与实时离开数据的火车。我想加上一个复杂的问题,显示下一班火车的发车时间。
是否有可能显示(或刷新)复杂的实时数据?例如,显示"3分钟到X台“。根据来自公共交通API的信息,数据可能每分钟都在变化。
我应该如何在watchOS 2或watchOS 3上完成这一任务?
我知道ETA应用程序显示旅行时间很复杂,但我不知道他们是如何做到的。
发布于 2016-06-15 05:33:32
实时更新是可能的吗?
reloadTimeline (和extendTimeline)就什么也不做了。
如果您的复杂情况已经超出了其分配给执行时间的每日预算,则调用此方法将什么都不做。请谨慎地调用此方法。并发症如何显示相对时间?
CLKRelativeDateTextProvider创建一个格式化的相对时间,该时间可以一分钟一分钟地更改。
CLKRelativeDateTextProvider对象创建一个格式化字符串,该字符串传递当前日期与指定日期之间的时间差。使用相对日期文本提供程序有效地实现计时器或其他相对时间值。不要使用多个时间线条目来复制倒计时计时器,而是使用相对日期文本提供程序创建单个时间线条目。当用户查看时钟面板时,ClockKit会自动更新复杂情况中的相对时间值,提供最新的时间信息。如何才能经常更新复杂情况?
transferCurrentComplicationUserInfo。
在watchOS 2中,这仅受每日预算的限制。在watchOS 3中,现在限制为每天50次传输。
有关更多详细信息,请参阅https://stackoverflow.com/questions/33316698/is-transfercurrentcomplicationuserinfo-more-suitable-for-complication-update/34796886#34796886。getNextRequestedUpdateDate来安排下次更新复杂的内容。
这不可能比每十分钟发生一次。
请注意,应该升级watchOS 3应用程序以使用后台刷新应用程序任务。主要的好处是背景任务可以做的不仅仅是更新复杂的内容。它们还可以处理获取数据、在数据到达时更新模型以及更新坞快照。scheduleBackgroundRefresh。
请注意,后台刷新应用程序任务不能使用超过10%的CPU。建议的WWDC 2016届会议
正如在会谈中提到的,您应该在需要的时候安排您的更新。
对于您的用例,示例只会在公共交通运行时,并且只有在定期安排的起飞时间受到延迟影响时才会出现。
苹果示例代码
苹果提供了WatchBackgroundRefresh示例代码,演示如何在后台使用WKRefreshBackgroundTask更新WatchKit应用程序。
要更新后台任务中的任何活动复杂性,只需添加代码来重新加载(或扩展)时间线:
let complicationServer = CLKComplicationServer.sharedInstance()
for complication in activeComplications {
complicationServer.reloadTimelineForComplication(complication)
} https://stackoverflow.com/questions/37819483
复制相似问题