CoreBluetooth后台扫描设备

use*_*CHU 5 iphone objective-c ios core-bluetooth bluetooth-lowenergy

我目前正在开发一款需要我使用蓝牙4.0扫描设备的应用.此时我遇到了一个问题.

当应用程序在后台运行时,是否可以让应用程序扫描设备?由于某种原因,该应用程序无法扫描设备.该应用程序在后台运行时未调用didDiscoverPeripheral.但是,一旦建立连接,我的应用程序就可以从设备接收数据.

为了简化操作,为什么我的应用程序在后台运行时无法扫描设备?

PS我输入了所需的后台模式1.App使用CoreBluetooth进行通信2.App使用CoreBluetooth共享数据

all*_*rog 5

在后台扫描是一个非常缓慢的过程。苹果表示,它比前台慢了55倍。我的经验表明,它可能更慢。因此,为了在后台扫描设备,请注意以下几点:

  1. 确保另一台设备以最大速度(20ms)投放广告,并投放正在扫描的服务。此答案中有一个示例:https : //stackoverflow.com/a/18113505/768935
  2. 由于扫描速度降低,请给应用程序更多时间来查找设备。
  3. 确保使用指定的服务开始扫描。您不能在后台扫描nil服务。
  4. 用于扫描的“ 允许重复”选项在后台被忽略。


小智 0

将服务或数据放入广告包中!如果您希望 iPhone 更快地发现它,还可以将广告周期设置得更快。前 30 秒我使用 20 毫秒。亨里克弟兄