为什么CBPeripheral标识符和UUID不同?

时间:2016-11-14 08:41:25

标签: swift ibeacon cbperipheral bleno

我有知道UUID的iBeacon。如果我从Android设备搜索此信标 - 我可以看到确切的UUID。

但是当我从iOS设备搜索此iBeacon时,无法找到此UUID。我发现外围设备的标识符与UUID不同。

func centralManagerDidUpdateState(_ central: CBCentralManager) {
  let serviceUUID: CBUUID = CBUUID(string: "e2c56db5-dffb-48d2-b060-d0f5a71096e0")
  central.scanForPeripherals(withServices: [serviceUUID], options: nil)
}

为什么他们不一样?如何使用已知的UUID搜索外围设备?

1 个答案:

答案 0 :(得分:1)

我怀疑你在Android上“发现”的不是iBeacon的ProximityUUID,而是一种不同的UUID(例如Larme在他的评论中建议的GATT服务。)有许多不同的UUID用于不同的蓝牙的东西。您想要的iBeacons称为Proxmity UUID。

您可以尝试使用Locate App.之类的专用信标扫描仪来查看Proximity UUID。如果您可以使用此应用程序查看信标,并将其识别为iBeacon,您还应该能够使用iOS上的CoreLocation如下:

let region = CLBeaconRegion(proximityUUID: UUID(uuidString: "11111111-2222-3333-4444-c0765a17c9ab")!, identifier: "myBeacons")
locationManager.delegate = this
locationManager.startRangingBeacons(in: region)

您无法使用CoreBluetooth API,因为您已经证明可以检测iBeacons,因为iOS会阻止使用CoreBluetooth来检测iBeacons。另请注意,在iOS上设置信标范围还有一些其他步骤(请求权限,定义回调方法),因此请查看像here这样的教程。