Val*_*ier 4 bluetooth ios swift
我只想获取我周围任何蓝牙设备的列表,但 CoreBluetooth 仅显示低功耗蓝牙 (4.0.0.0)。
我不想连接到设备,而只想显示其名称。
有没有办法做到这一点?
您想要做的是扫描CBPeripheral您所在地区的所有内容。CBPeripheral是广播CBService外围设备可能通告的任何(多个)的类。
要扫描这些外围设备,您需要一个CBCentralManager. CBCentralManager是对外围设备进行扫描的类。
为此,您必须实例化您的 CBCentralManager
centralManager = CBCentralManager(delegate: self, queue: .main)
Run Code Online (Sandbox Code Playgroud)
一个好主意是在您扫描外围设备之前告诉您CBCentralManager您只想发现唯一的外围设备一次。
let options: [String: Any] = [CBCentralManagerScanOptionAllowDuplicatesKey:
NSNumber(value: false)]
Run Code Online (Sandbox Code Playgroud)
并且当您告诉您CBCentralManager扫描时,请不要指定广告的任何服务CBPeripheral。而是传递nil此参数以指示您要发现所有外围设备。
centralManager?.scanForPeripherals(withServices: nil, options: options)
Run Code Online (Sandbox Code Playgroud)
上述调用将开始对该区域内的蓝牙设备进行实际扫描。您将在CBCentralManagerDelegate方法中收到对扫描结果的回调。
要获取蓝牙设备的名称,只需查看CBPeripheral发现的(s)名称即可。你通过CBCentralManagerDelegate方法来做到这一点didDiscover peripheral: CBPeripheral。
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("Discovered \(peripheral.name ?? "")")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6803 次 |
| 最近记录: |