如何确定发现的外围设备的 serviceUUID

Posted

技术标签:

【中文标题】如何确定发现的外围设备的 serviceUUID【英文标题】:How to determine the serviceUUID of the discovered peripheral 【发布时间】:2020-07-10 21:36:08 【问题描述】:

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

【问题讨论】:

对于未来的问题,您可能需要添加标签“core-bluetooth”,以便有专业知识的人轻松找到您的问题。 【参考方案1】:

您可以从广告中读取检测到的服务 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)")
        
    

【讨论】:

以上是关于如何确定发现的外围设备的 serviceUUID的主要内容,如果未能解决你的问题,请参考以下文章

无法使用服务 UUID 发现外围设备

如何在 Android 中获取当前连接的 BLE 外围设备

如何创建 Android BLE 外围设备?

扫描提供特定服务的外围设备,但在发现的外围设备上找不到服务

CoreBluetooth:无法发现已发现外围设备的特征

核心蓝牙无法发现外围设备