You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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)**中,需通过以下步骤读取:

  1. 发现Device Information服务
  2. 发现该服务下的Serial Number特征
  3. 读取特征值并转换为字符串

用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:31:01