在后台收集Apple Watch加速度计数据

时间:2017-06-07 23:25:13

标签: ios swift watch-os

我正在尝试制作一款全天分析加速度计数据的应用。该应用程序不一定需要持续访问加速度计数据,它只需要分析所有数据。那么,有没有办法在本地存储数据并每小时分析一次(如果应用程序在Dock中,可能)。可以在一天结束时进行输出和分析吗?顺便说一句,我在Swift中编码。谢谢!

1 个答案:

答案 0 :(得分:2)

这是可能的,但相当复杂,因为watchOS3应用程序主要被视为前景。

  1. 一旦您的watchapp请求CoreMotion传感器记录加速度计数据CMSensorRecorder().recordAccelerometer(forDuration: ...),此数据将由传感器自行记录,而不会对您的应用产生任何额外影响,并将其存储在系统中3天。
  2. 当您的应用具有执行时间(由用户在前台打开或给定后台刷新任务)时,您可以按CMSensorRecorder().accelerometerData(from: startDate, to: endDate)获取数据并进行处理。
  3. 最困难的是获得足够的执行时间来处理和发送将被记录的大量数据。根据分析方法的复杂性,您可能会面临操作系统在后台刷新任务中没有给出足够执行时间的问题,并且操作系统监视程序会终止该过程。另一方面,当您的应用程序是前台时,它仅在屏幕打开时处于活动状态,并在屏幕关闭后进入暂停状态。

    如果您的应用位于Dock中,则每小时最多可获得1次后台刷新任务。如果您的应用程序在活动表盘上有复杂功能,您每小时最多可以获得2次后台刷新任务。此数字取决于电池状态,您使用以前任务的方式以及其他应用当前使用的任务数量。

    除了后台刷新任务,watchapp只能在锻炼期间在后台工作。在这种情况下,持续时间不受限制,但您不能使用超过15%的CPU。

    底线: *您可以每小时安排一次后台刷新任务 *一旦后台任务开始,开始锻炼,所以应用程序将在后台激活 *一旦锻炼成功开始,将任务返回到OS asap *从传感器请求加速度计数据 *处理它注意CPU使用率 *发送到任何你想要的地方并完成锻炼

    要检查的WWDC16会话:227235218