当应用程序处于后台以及手机屏幕关闭时,我需要继续扫描来自外围设备的广播。从后台扫描成功,但是当手机屏幕关闭时,我无法扫描(无法触发didDiscoverPeripheral)广播。
到目前为止,我已在beginBackgroundTaskWithExpirationHandler
内实施applicationDidEnterBackground
,这就是我能够在后台扫描的方式。那我该怎么做呢?
答案 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。
编辑:除非连接了设备(如耳机),否则现有的连接设备可以共享数据。