bluetooth-lowenergy - 如何确定发现的外围设备的 serviceUUID
问题描述
我的应用程序将具有一组 serviceUUID,用于发现选定的外围设备。一旦发现该集合中的外围设备,我如何确定它具有/必须允许它被发现的 serviceUUID?外围设备标识符的 UUID 似乎与我在测试代码中给出的 serviceUUID 不同。
解决方案
您可以从广告中读取检测到的服务 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)")
}
}
推荐阅读
- java - 如何创建独特的、复杂的 Xpath 来查找 textarea 标签?
- java - Hibernate:插入集合时为每个关系记录创建一个唯一的 GenerateValue
- mysql - 获取 php 语言的平均小时数
- ssl - SSL 证书续订
- javascript - 如何为服务器和客户端创建单独的项目?(快递和js)
- java - 理解dinic算法的问题?
- swift - 以秒为单位的 Swift 倒数计时器,每分钟更新一次标签
- python - Seaborn Countplot 中的布尔掩码
- python - 使用 Python 诗歌的安装后脚本
- python - 如何在列表理解中增加变量