手机屏幕关闭时,核心蓝牙扫描外围设备

时间:2016-10-26 02:35:51

标签: ios objective-c bluetooth bluetooth-lowenergy core-bluetooth

当应用程序处于后台以及手机屏幕关闭时,我需要继续扫描来自外围设备的广播。从后台扫描成功,但是当手机屏幕关闭时,我无法扫描(无法触发didDiscoverPeripheral)广播。

到目前为止,我已在beginBackgroundTaskWithExpirationHandler内实施applicationDidEnterBackground,这就是我能够在后台扫描的方式。那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

这是不可能的。 当您勾选'Uses Bluetooth LE accessories''Acts as a Bluetooth LE accessory'时,当iPhone屏幕灯关闭时,核心蓝牙框架将停止广告和扫描。屏幕指示灯重新打开后,它将恢复广告/扫描。这是iOS中可能实现的最大方案。

如果您想进一步使用此功能,可以使用beginBackgroundTaskWithExpirationHandler-https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiratio,但这在3分钟内几乎无效。该3分钟从应用程序从前台转到后台开始。

为了节省电池,iOS似乎会自动关闭BLE硬件,并在设备移动/屏幕唤醒后立即重新打开。因为当屏幕关闭时,用户仍然不使用iPhone。

编辑:除非连接了设备(如耳机),否则现有的连接设备可以共享数据。