如何在iOS Swift中获取可用蓝牙设备的名称列表?

3
这个问题是这个问题的复制。
我在我的类中声明了CBCentralManagerDelegate,并声明了var cb = CBCentralManager()
我将委托设置为cb.delegate = self
我使用cb.scanForPeripheralsWithServices(nil, options: nil)来搜索设备。
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
    print("\(advertisementData.description)")
}

我可以打印出详细信息。但在日志中,我得到了这样的数据:
["kCBAdvDataTxPowerLevel": 0, "kCBAdvDataLocalName": Smart Key, "kCBAdvDataManufacturerData": <bc00>, "kCBAdvDataServiceData": {
Battery = <64>;
}, "kCBAdvDataIsConnectable": 1]

我所需要的只是设备名称,比如:My2Device

如果我周围有2-3个设备,我不知道我的iPhone连接到了哪个设备。因此,我想知道设备的名称。或者还有其他选项吗? - user5907771
2个回答

3
蓝牙低功耗支持一种协议,如果您以前没有经历过它可能有点不直观。可以这样理解:
- BLE设备称为“外围设备”。 - 每个外围设备都有一个地址(在iPhone上可能会更改),有时也有一个名称(也可更改)。 - 外围设备广播“服务”。 - 每个服务都有“特征”(读/写)。 - 每个特征都有一个可以读取或写入的值。
获取可靠的“名称”的最佳方法是在一个设备上发布一个“服务”,然后在另一个设备上发现该服务。如果您想深入了解细节,还可以发布特征并读取名称。
原因:名称不一致且可能会更改。但是当您发布服务时,很可能会在另一端发现它...
希望这有所帮助。
顺便说一下:如果您的应用程序是基于用例驱动的,并且不想涉及网络的详细信息,请考虑使用可以为您完成此操作的SDK/框架。
例如:p2pkit.io或Google Nearby。
免责声明:我在Uepaa工作,为Android和iOS开发p2pkit.io。

1
只需打印其名称属性。
 print("didDiscoverPerifpheral = \(peripheral.name)")

或者,因为它是可选的:

if let _name = peripheral.name {
        print("didDiscoverPerifpheral = \(peripheral.name!)")
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接