0

我有知道 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 的外围设备?

4

1 回答 1

1

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

您可以尝试使用定位应用程序等专用信标扫描仪查看 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 来检测 iBeacon,因为 iOS 会阻止使用 CoreBluetooth 来检测 iBeacon。另请注意,在 iOS 上设置信标测距还有几个步骤(请求权限、定义回调方法),因此请查看此处的教程。

于 2016-11-14T09:11:17.100 回答