此问题是this qustion
的副本我已在班上宣布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
答案 0 :(得分:1)
蓝牙低功耗支持一种协议,如果您之前没有遇到过这种协议,这种协议有点不直观。
这样想:
获得可靠“名称”的最佳方法是在一台设备上发布“服务”并在另一台设备上发现该服务。如果您想了解详细信息,您还可以发布特征并阅读名称。
推理:名称不一致,可以更改。但是当你发布一个服务时,很可能你会在另一边发现它......
希望这有帮助
顺便说一句:如果您的应用程序是用例驱动的,并且您不想深入了解网络的细节,请考虑使用可以为您执行此操作的SDK / Framework。
例如:http://p2pkit.io或Google Nearby
免责声明:我为Uepaa工作,为Android和iOS开发p2pkit.io。
答案 1 :(得分:1)
只需打印其名称属性即可。
print("didDiscoverPerifpheral = \(peripheral.name)")
或者,因为它是可选的:
if let _name = peripheral.name {
print("didDiscoverPerifpheral = \(peripheral.name!)")
}