CoreBluetooth用于检测附件接近度(同时应用程序在后台)

时间:2015-07-07 14:18:41

标签: ios iphone bluetooth-lowenergy core-bluetooth ibeacon

当应用在后台运行时,我想使用CoreBluetooth来检测硬件的接近度(发出BLE信号)。

第一步是在功能选项卡中激活BLE后台模式。这样,即使在后台中运行,该应用也可以接收BLE信号。现在,第二步是编写代码来检测BLE外设的接近度

查看iOS开发人员Bluetooth guide (at page 45/46),我发现:

  

CBCentralManagerScanOptionAllowDuplicatesKey 常量作为扫描选项   调用scanForPeripheralsWithServices:options:方法时。什么时候   您这样做,每次中央收到时都会生成发现事件   来自外围设备的广告包。 关闭默认   行为可能对某些用例有用,例如启动   基于外围设备的接近度连接到外围设备(使用   外围接收信号强度指示(RSSI)值)。 Ť

  • 这是正确的方向吗?
  • 就iOS设备电池使用而言,这种方法效率低于使用iBeacon吗?

1 个答案:

答案 0 :(得分:1)

是的,正如您所描述的那样,使用CoreBluetooth是一种有效的方法。您可以为前景中检测到的每个数据包(以及非制造商广告的后台)获取回调。然后,您可以读取RSSI作为接近度的指标。

无论您是想使用CoreBluetooth还是将iBeacons与CoreLocation配合使用,电池使用情况与大多数前景测距情况类似。

如果使用CoreBluetooth,您可能不希望在后台无限期地为每个数据包进行回调,因为它会更快耗尽电池电量。 CoreLocation iBeacon API限制您在每个唤醒事件的后台测距10秒,以帮助节省电池。

如果您使用CoreBluetooth在后台看到您的应用程序使用时间较长,您可能需要添加自己的逻辑以防止电池耗尽。