gpt4 book ai didi

ios - Corebluetooth 使用 Swift 获取设备名称

转载 作者:行者123 更新时间:2023-11-28 06:13:03 26 4
gpt4 key购买 nike

我在我的 iOS 应用程序中使用 CoreBluetooth 框架来扫描和连接到其他蓝牙设备。我能够使用以下代码成功扫描设备:

var centralManager: CBCentralManager?
var peripherals = [CBPeripheral]()
centralManager = CBCentralManager(delegate: self, queue: DispatchQueue.main)

在 CBCentralManagerDelegate 中,我实现了以下代码:

extension ViewController: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if (central.state == .poweredOn){
self.centralManager?.scanForPeripherals(withServices: nil, options: nil)
}
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

if !peripherals.contains(peripheral) {
let localName = advertisementData[CBAdvertisementDataLocalNameKey]
print("\(String(describing: localName))" )
peripherals.append(peripheral)
tableView.reloadData()
}
}
}

从上面的代码来看,localName 始终为 nil。我缺少任何代码吗?

要添加更多信息,
当我在我的 Mac 中扫描蓝牙设备时,我能够看到设备的名称。但是当我在我的 iPhone 上扫描蓝牙设备时,没有列出任何蓝牙设备。

我交叉检查并确保我在另外 4 台设备(iPad、2 部安卓手机和 1 部安卓电视)上启用了蓝牙

最佳答案

带有核心蓝牙库的 Swift:

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){

let peripheralLocalName_advertisement = ((advertisementData as NSDictionary).value(forKey: "kCBAdvDataLocalName")) as? String

if (((advertisementData as NSDictionary).value(forKey: "kCBAdvDataLocalName")) != nil)

print(peripheralLocalName_advertisement)//peripheral name from advertismentData

print(peripheral.name)//peripheral name from peripheralData

peripherals.append(peripheral)

arrayPeripheral.append(advertisementData)
}
}

关于ios - Corebluetooth 使用 Swift 获取设备名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45908137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com