Core Bluetooth Swift 获取设备名称

Posted

技术标签:

【中文标题】Core Bluetooth Swift 获取设备名称【英文标题】:Core Bluetooth Swift get devices name 【发布时间】:2017-10-04 08:42:36 【问题描述】:

我正在研究 Core Bluetooth 框架,并为此做了一个测试项目以供学习:

class ViewController: UIViewController,CBCentralManagerDelegate,CBPeripheralDelegate 

    var centralManager: CBCentralManager = CBCentralManager()
    var peripheral: CBPeripheral? = nil

    override func viewDidLoad()
    
        super.viewDidLoad()
        centralManager = CBCentralManager(delegate: self, queue: nil)
    

    override func didReceiveMemoryWarning()
    
        super.didReceiveMemoryWarning()

    

    func centralManagerDidUpdateState(_ central: CBCentralManager)
    
        central.scanForPeripherals(withServices: nil, options: nil)
    

    @available(ios 5.0, *)
    public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
    
        let device = (advertisementData as NSDictionary)
            .object(forKey: CBAdvertisementDataLocalNameKey)
            as? NSString

        let isMyIphone = device?.contains("iPhone")

    

首先我想看看我周围的蓝牙名称,因此我有 2 部 iPhone。 我用于执行此“应用程序”进行扫描,我想查看另一部 iPhone 的名称(在蓝牙设置中名称为“iPhone”),但是当我开始扫描时,调用了“didDiscover”方法但设备常数为零。 为什么?我错了什么?

【问题讨论】:

【参考方案1】:

如果你使用会更好 外围设备名称 而是 让 device = (advertisementData as NSDictionary) .object(forKey: CBAdvertisementDataLocalNameKey) 作为? NSString

【讨论】:

感谢您的回复!从技术上讲,您的回答不是答案,您只是建议如果用户采取不同的做法会“更好”。更好的如何,究竟是什么?一些有帮助的事情:1)利用 SO 对格式化的支持并说,例如,“使用 peripheral.name 而不是 let device = ((advertisementData as NSDictionary) .object(...),以及 2)如果您已经看到建议的更改解决了类似的问题原始发帖人明确这么说,例如,“我已经完全看到你描述的行为,并切换到(...)修复它。”

以上是关于Core Bluetooth Swift 获取设备名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用 Core Bluetooth 获取蓝牙设备的唯一 ID

有没有办法可以在 Swift 中使用 Core Bluetooth 更改另一部 iPhone 上的视图控制器?

我们可以使用 Core-Bluetooth 模拟“不可连接”的外围设备吗

Core Bluetooth下实现两个设备进行互联

Core Bluetooth 概述 官方文档翻译

如何使用 Core Bluetooth 在 iOS 中设置 BLE 外围设备的名称