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

问题描述 投票:0回答:1

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

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

ios objective-c bluetooth bluetooth-lowenergy core-bluetooth
1个回答
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。

编辑:除非连接了设备,例如耳机-尽管不做广告,但是现有的连接设备可以共享数据。

© www.soinside.com 2019 - 2024. All rights reserved.