首页 > 解决方案 > 如何确定发现的外围设备的 serviceUUID

问题描述

我的应用程序将具有一组 serviceUUID,用于发现选定的外围设备。一旦发现该集合中的外围设备,我如何确定它具有/必须允许它被发现的 serviceUUID?外围设备标识符的 UUID 似乎与我在测试代码中给出的 serviceUUID 不同。

标签: bluetooth-lowenergydevicecore-bluetoothidentifier

解决方案


您可以从广告中读取检测到的服务 UUID,但它们可能会出现在两个地方,具体取决于广告是否来自后台 iOS 设备(在“溢出区域”中传输)。

尝试像这样从两个地方获取服务 UUID 的列表:

    func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
        var detectedServiceUuids = advertisementData[CBAdvertisementDataServiceUUIDsKey] as? [CBUUID] ?? []
        if let detectedOverflowUuids = advertisementData[CBAdvertisementDataOverflowServiceUUIDsKey] as? [CBUUID] {
            detectedServiceUuids.append(contentsOf: detectedOverflowUuids)
        }
        for detectedServiceUuid in detectedServiceUuids {
            print("I detected serviceUuid: \(detectedServiceUuid)")
        }
    }

推荐阅读