4

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

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

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

4

2 回答 2

2

据我所知,手表在锁定状态下的工作与解锁状态略有不同。
一个区别是并发症的显示:
您可以指定隐私行为,即钟面显示为并发症(您可以选择在锁定屏幕上显示的内容)。
因此,在我看来,当手表锁定并充电时,可以按计划运行后台任务。因此,当手表解锁时,数据将自动准备就绪。
出于这个原因,没有专门的文档说明手表被锁定时会发生什么,除了一些特殊情况,如锁定状态下表盘上显示的内容。

于 2019-12-05T22:14:30.867 回答
0

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

  1. 在 applicationDidEnterBackground() 中,我设置了一个标志(最后一次更新并发症的时间)。我建议您使用单例,以便在您的应用程序的任何地方都可以访问它。

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

  3. 如果标志不存在,因为应用程序已终止,或者它是第一次启动,则无论如何都要刷新(设置过去的 24 小时日期,使用与 1/,2/ 中相同的逻辑)

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

于 2019-12-04T10:33:51.430 回答