我有知道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搜索外围设备?
答案 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这样的教程。