如何在后台使用BLE服务扫描并连接到iBeacon

时间:2018-06-13 14:57:20

标签: ios swift bluetooth-lowenergy ibeacon

我有一个带有服务广告的iBeacon设备。我需要知道如何在后台模式下从iOS应用程序连接到iBeacon。

  1. 我知道iBeacon的服务UUID,但我无法在前台和后台模式下使用serviceUUID进行扫描。
  2. 如果我扫描nil并使用名称进行过滤,则在前台工作但不在后台工作。
  3. 请帮帮我,我是iOS编程新手。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不要将iBeacon传输的ProximityUUID与GATT服务UUID混淆。虽然两者都是16字节标识符,通常以相同的十六进制格式表示,但两者具有完全不同的含义。 iBeacon ProximityUUID不能用作GATT服务UUID。

完全没有要求发送iBeacon帧的蓝牙信标承载任何可连接的GATT服务。虽然一些制造商确实在其硬件信标中提供GATT服务以配置其标识符以及其他用途,但GATT服务UUID通常与ProximityUUID不同。

如果你想做你所描述的,你需要:

  1. 发现您的灯塔制造商甚至可以提供GATT服务。
  2. 是的,找出GATT服务UUID是什么。同样,它通常与iBeacon ProximityUUID不同。
  3. 如果您无法从制造商处获取信息,您可以通过在前台扫描(未指定GATT服务UUID)找到它,然后打印出您所获得的设备的已发现的GATT服务UUID从扫描结果中调用CBPeripheral上的discoverServices。您可能会发现没有任何服务,这将使您无法回答上述第一个问题。

    获得上述信息后,您可以在开始扫描时指定GATT服务UUID,在后台扫描信标。 在后台,如果您未指定GATT服务UUID ,则无法获得结果,即使您做的结果也会慢得多。