首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >watchOS -实时显示复杂的离场数据

watchOS -实时显示复杂的离场数据
EN

Stack Overflow用户
提问于 2016-06-14 18:24:51
回答 1查看 2.2K关注 0票数 6

我有一个公共交通应用程序与实时离开数据的火车。我想加上一个复杂的问题,显示下一班火车的发车时间。

是否有可能显示(或刷新)复杂的实时数据?例如,显示"3分钟到X台“。根据来自公共交通API的信息,数据可能每分钟都在变化。

我应该如何在watchOS 2或watchOS 3上完成这一任务?

我知道ETA应用程序显示旅行时间很复杂,但我不知道他们是如何做到的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-15 05:33:32

实时更新是可能的吗?

  • 复杂情况并不是为了显示实时数据而设计的。频繁的更新会影响能效,影响电池(无论是手表还是手机)。 为了最大限度地减少功耗,ClockKit要求您提供尽可能多的可用数据,然后缓存数据并在需要时呈现。
  • 虽然没有固定次数的复杂时间线可以重新加载,复杂的数据源受每日执行时间预算的限制。 如果应用程序的数据经常变化,可能很难提供足够的数据来在复杂的情况下显示。更糟糕的是,如果过于频繁地刷新复杂数据,则可能会超出执行时间预算,而复杂性可能要到第二天才会更新。
  • 一旦耗尽了每日预算,调用reloadTimeline (和extendTimeline)就什么也不做了。 如果您的复杂情况已经超出了其分配给执行时间的每日预算,则调用此方法将什么都不做。请谨慎地调用此方法。

并发症如何显示相对时间?

  • 您可以使用CLKRelativeDateTextProvider创建一个格式化的相对时间,该时间可以一分钟一分钟地更改。 CLKRelativeDateTextProvider对象创建一个格式化字符串,该字符串传递当前日期与指定日期之间的时间差。使用相对日期文本提供程序有效地实现计时器或其他相对时间值。不要使用多个时间线条目来复制倒计时计时器,而是使用相对日期文本提供程序创建单个时间线条目。当用户查看时钟面板时,ClockKit会自动更新复杂情况中的相对时间值,提供最新的时间信息。

如何才能经常更新复杂情况?

  • 您可以使用复杂的推送更新(来自远程服务器,也可以在本地使用iOS 10中的电话)。 有一个限制50复杂推送更新每天。
  • 您可以在电话中获取数据并使用transferCurrentComplicationUserInfo。 在watchOS 2中,这仅受每日预算的限制。在watchOS 3中,现在限制为每天50次传输。 有关更多详细信息,请参阅https://stackoverflow.com/questions/33316698/is-transfercurrentcomplicationuserinfo-more-suitable-for-complication-update/34796886#34796886
  • 在watchOS 2中,您可以使用getNextRequestedUpdateDate来安排下次更新复杂的内容。 这不可能比每十分钟发生一次。 请注意,应该升级watchOS 3应用程序以使用后台刷新应用程序任务。主要的好处是背景任务可以做的不仅仅是更新复杂的内容。它们还可以处理获取数据、在数据到达时更新模型以及更新坞快照。
  • 最后,您可以安排手动更新。在watchOS 3中,推荐的方法是通过后台刷新应用程序任务。 任务预算允许每小时执行4个任务。有关更多详细信息,请参阅scheduleBackgroundRefresh。 请注意,后台刷新应用程序任务不能使用超过10%的CPU。

建议的WWDC 2016届会议

正如在会谈中提到的,您应该在需要的时候安排您的更新。

对于您的用例,示例只会在公共交通运行时,并且只有在定期安排的起飞时间受到延迟影响时才会出现。

苹果示例代码

苹果提供了WatchBackgroundRefresh示例代码,演示如何在后台使用WKRefreshBackgroundTask更新WatchKit应用程序。

要更新后台任务中的任何活动复杂性,只需添加代码来重新加载(或扩展)时间线:

代码语言:javascript
运行
复制
let complicationServer = CLKComplicationServer.sharedInstance()

for complication in activeComplications {
    complicationServer.reloadTimelineForComplication(complication)
} 
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37819483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档