gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:03:58 25 4
gpt4 key购买 nike

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

最佳答案

我怀疑您在 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 来检测 iBeacon,因为 iOS 会阻止使用 CoreBluetooth 来检测 iBeacon。另请注意,在 iOS 上设置信标测距还有几个步骤(请求权限、定义回调方法),因此请查看像 here 这样的教程。 .

关于swift - 为什么 CBPeripheral 标识符和 UUID 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40584714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com