我的应用程序使用蓝牙配件,因此我打开相应的背景模式。是否可以在后台连续接收CoreMotion陀螺仪数据?
该方案是在应用程序处于后台时扫描并连接BLE外围设备。并在应用程序处于后台时检测手机旋转,并在检测到某些动作时向BLE设备发送内容。
陀螺仪数据更新使用我创建的NSOperationQueue。它会在加载第一个视图后立即启动。
当我在前台用app测试它时,BLE外围设备连接,然后放入后台。陀螺仪数据更新很快就会停止。当我走出BLE范围时,陀螺仪数据再次开始,然后很快停止。我走进BLE外围范围,陀螺仪数据再次出现。 (我正在带着iPhone连接到笔记本电脑,XCode正在运行并直接从日志中看到它。)
有没有办法可以随时可靠地获取陀螺仪数据,即使应用程序在后台?
答案 0 :(得分:1)
看起来如果没有背景音频或GPS跟踪等其他背景活动,您无法从CoreMotion获取数据。 根据我的经验,这两种模式都允许您在后台执行代码。
修改强>
使用BLE时,请务必不时通过蓝牙发送数据,以防止iOS暂停您的应用。
答案 1 :(得分:0)
确认并添加到已接受的答案中(在 iOS 上搜索背景动作更新将我带到这里)。是的,需要运行其他一些后台活动才能使 CoreMotion 更新工作。我已经创建了 a simple iOS app,其中包含探索后台 CoreLocation 和 CoreMotion 更新所需的样板。 AppDelegate
和 ViewController
在某种程度上被记录在案。在运行 iOS 14.2 的 XS Max 上测试。
希望不言自明,也许对其他开始研究相同领域的人有用。