当应用在后台运行时,我想使用CoreBluetooth来检测硬件的接近度(发出BLE信号)。
第一步是在功能选项卡中激活BLE后台模式。这样,即使在后台中运行,该应用也可以接收BLE信号。现在,第二步是编写代码来检测BLE外设的接近度。
查看iOS开发人员Bluetooth guide (at page 45/46),我发现:
CBCentralManagerScanOptionAllowDuplicatesKey 常量作为扫描选项 调用scanForPeripheralsWithServices:options:方法时。什么时候 您这样做,每次中央收到时都会生成发现事件 来自外围设备的广告包。 关闭默认 行为可能对某些用例有用,例如启动 基于外围设备的接近度连接到外围设备(使用 外围接收信号强度指示(RSSI)值)。 Ť
答案 0 :(得分:1)
是的,正如您所描述的那样,使用CoreBluetooth是一种有效的方法。您可以为前景中检测到的每个数据包(以及非制造商广告的后台)获取回调。然后,您可以读取RSSI作为接近度的指标。
无论您是想使用CoreBluetooth还是将iBeacons与CoreLocation配合使用,电池使用情况与大多数前景测距情况类似。
如果使用CoreBluetooth,您可能不希望在后台无限期地为每个数据包进行回调,因为它会更快耗尽电池电量。 CoreLocation iBeacon API限制您在每个唤醒事件的后台测距10秒,以帮助节省电池。
如果您使用CoreBluetooth在后台看到您的应用程序使用时间较长,您可能需要添加自己的逻辑以防止电池耗尽。