我正在尝试扫描所有设备,当我运行此代码以在打开蓝牙的iPhone上对其进行测试时,我还为该设备设置了名称。当我打印到控制台时,它只说没有名字。我尝试了多种方法来解决此问题,但我确实在努力实现这一点。这是获取外围设备名称的正确方法,因为它是空的还是我做错了。
import UIKit
import CoreBluetooth
class ViewController: UIViewController {
private var centralManager: CBCentralManager!
override func viewDidLoad() {
super.viewDidLoad()
//Instantiate CBCentralManager in viewDidLoad method.
centralManager = CBCentralManager(delegate: self, queue: nil, options: nil)
view.backgroundColor = .white
}
}
extension ViewController:CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
// checks to see if the bluetooth is on
if central.state == .poweredOn {
print("Bluetooth is On")
centralManager.scanForPeripherals(withServices: nil, options: nil)
} else {
print("Bluetooth is not active")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
//It will be called when any advertising device is discovered. Inside the method, it prints the device name, RSSI, and advertising data.
print("\nName : \(peripheral.name ?? "(No name)")")
print("RSSI : \(RSSI)")
for ad in advertisementData {
print("AD Data: \(ad)")
}
}
}
在控制台中,显示如下
Bluetooth is On
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 0)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : -87
AD Data: (key: "kCBAdvDataServiceUUIDs", value: <__NSArrayM 0x280370c90>(
FD6F
)
)
AD Data: (key: "kCBAdvDataIsConnectable", value: 0)
AD Data: (key: "kCBAdvDataServiceData", value: {
FD6F = <e1644a9f c228311d 5fac0de6 c66fecfd 1de02b44>;
})
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : -40
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : -92
AD Data: (key: "kCBAdvDataIsConnectable", value: 0)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)
Name : (No name)
RSSI : -87
AD Data: (key: "kCBAdvDataIsConnectable", value: 0)
Name : (No name)
RSSI : 127
AD Data: (key: "kCBAdvDataTxPowerLevel", value: 12)
AD Data: (key: "kCBAdvDataIsConnectable", value: 1)