app在后台时是否可以获取陀螺仪数据更新

Is it possible to obtain gyroscope data updates when app is in the background

我的应用使用了蓝牙配件,所以我打开了相应的后台模式。是否可以在后台持续接收CoreMotion陀螺仪数据?

场景是应用程序在后台扫描并连接BLE外围设备。并在应用程序处于后台时检测 phone 旋转,并在检测到某些运动时向 BLE 设备发送内容。

陀螺仪数据更新正在使用我创建的 NSOperationQueue。它会在加载第一个视图后立即启动。

当我在前台用应用程序测试它时,BLE 外设已连接,然后放入后台。陀螺仪数据更新很快停止。当我走出 BLE 范围时,陀螺仪数据再次开始,然后很快停止。我走进BLE外围范围内,陀螺仪数据又出现了。 (我带着 iPhone 走路,用 XCode 运行 连接到笔记本电脑,并直接从日志中看到它)。

有没有办法随时可靠地获取陀螺仪数据,即使应用程序处于后台?

看看this question

看起来如果没有其他背景 activity(例如背景音频或 GPS 跟踪),您将无法从 CoreMotion 获取数据。 根据我的经验,这两种模式都允许您在后台执行代码。

编辑:
使用 BLE,确保不时通过蓝牙发送数据,以防止 iOS 在 activity.

中暂停您的应用程序

确认并添加到已接受的答案(在 iOS 上搜索背景动态更新让我来到这里)。是的,一些其他背景 activity 需要 运行 才能使 CoreMotion 更新生效。我创建了 a simple iOS app,其中包含探索后台 CoreLocation 和 CoreMotion 更新所需的样板。 AppDelegateViewController 在某种程度上有记录。在 XS Max 运行 iOS 14.2 上测试。 希望不言自明,并且可能对开始研究相同领域的其他人有用。