在Xcode中如何查看蓝牙序列号?CBService转字符串方法求助
关于CBService转字符串与蓝牙序列号查看的解决方案
一、将CBService转换为自定义字符串
你看到的CBService打印内容是系统默认的调试描述,若需要自定义字符串格式,直接提取CBService的公开属性拼接即可:
遍历获取到的services数组,提取每个服务的UUID、主服务状态等关键信息:
peri[0].discoverServices(withUUIDs: nil, completion: { result in switch result { case .success(let services): let serviceStrings = services.map { service in let uuidString = service.uuid.uuidString let isPrimary = service.isPrimary ? "YES" : "NO" return "CBService: UUID=\(uuidString), isPrimary=\(isPrimary)" } print(serviceStrings.joined(separator: ", ")) case .failure(let error): print(error) } })
执行后就能得到结构化的字符串,清晰展示每个服务的核心信息。
二、在Xcode中查看蓝牙设备序列号
蓝牙设备的序列号通常存储在**Device Information服务(UUID: 180A)下的Serial Number特征(UUID: 2A25)**中,需通过以下步骤读取:
- 发现Device Information服务
- 发现该服务下的Serial Number特征
- 读取特征值并转换为字符串
用SwiftifyBluetooth实现的代码示例:
// 发现Device Information服务 peri[0].discoverServices(withUUIDs: [CBUUID(string: "180A")], completion: { result in switch result { case .success(let services): guard let infoService = services.first else { return } // 发现Serial Number特征 peri[0].discoverCharacteristics(withUUIDs: [CBUUID(string: "2A25")], for: infoService, completion: { charResult in switch charResult { case .success(let characteristics): guard let serialChar = characteristics.first else { return } // 读取特征值 peri[0].readValue(for: serialChar, completion: { readResult in switch readResult { case .success(let data): if let serialNumber = String(data: data, encoding: .utf8) { print("蓝牙设备序列号:\(serialNumber)") } case .failure(let error): print("读取序列号失败:\(error)") } }) case .failure(let error): print("发现特征失败:\(error)") } }) case .failure(let error): print("发现服务失败:\(error)") } })
运行代码后,即可在Xcode控制台看到打印出的蓝牙设备序列号。
内容的提问来源于stack exchange,提问作者Brinkster129
相关产品推荐
相关产品推荐

