当用户解锁他们的手表时,复杂功能数据是最新的?

Having complication data up to date when the user unlocks their watch?

我目前正在开发一个简单的应用程序,它可以在 watchOS 复杂功能中显示通过网络接收的数据。值得注意的是,在需要新的网络提取之前,此数据仅与约 30 分钟相关。

我想让复杂功能在用户早上解锁手表时保持最新状态(这是 Apple 提出的一个常见用例)。

是否可以在用户解锁手表时接收某种后台任务?如果我安排了一个后台任务,并且手表在刷新时被锁定并正在充电,后台任务还会触发吗?当用户醒来并解锁手表时,我可以使用哪些技术为用户准备好数据?是否有专门针对手表锁定时后台任务的文档?

我会使用应用程序生命周期文档 here,并且很可能会选择:

  1. 在 applicationDidEnterBackground() 中,我会设置一个标志(当 并发症最后更新)。我建议你使用单例,这样它就可以在你的应用程序的任何地方访问。

  2. 然后在 applicationDidBecomeActive() 中我会拿起旗帜,进行比较 与当前时间,并通知活动 ViewController 到 如果超过 30 分钟,则刷新其数据。

  3. 如果标志不存在,因为应用程序已终止,或者它是 首先启动,然后无论如何刷新(设置过去 24 小时的日期,以 使用与 1/,2/)

  4. 相同的逻辑

如果你想让它更永久,使用 NSDefaults 来存储上次更新并发症的时间。

据我所知,手表在锁定状态下与解锁状态下的工作方式略有不同。
一个区别是并发症的显示:
您可以指定隐私行为,即 what the clock face displays as complication (you can select what is displayed on the lock screen).
因此,在我看来,当手表锁定并充电时,可以 运行 按计划执行后台任务。这样手表解锁后数据会自动就绪。
因此,没有专门的文档记录手表锁定时会发生什么,除了一些特殊情况,如锁定状态下表盘上显示的内容。