如何在 ios swift 中连接蓝牙低功耗?
Posted
技术标签:
【中文标题】如何在 ios swift 中连接蓝牙低功耗?【英文标题】:how to connect with bluetooth low energy in ios swift? 【发布时间】:2017-04-12 01:52:01 【问题描述】:我想连接 ble 外围设备。 但是我的代码没有调用 didConect 函数
这是我的代码:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
let device = (advertisementData as NSDictionary)
.object(forKey: CBAdvertisementDataLocalNameKey)
as? NSString
if device?.contains(BEAN_NAME) == true
print("Did discover peripheral", peripheral)
self.bluetoothManager.stopScan()
self._peripheral = peripheral
self._peripheral.delegate = self
central.connect(peripheral, options: nil)
func centralManager( central: CBCentralManager, didConnect peripheral: CBPeripheral) //cant call this
print("connected to \(BEAN_NAME)")
peripheral.discoverServices(nil)
日志:
BLE service is powered on
Did discover peripheral <CBPeripheral: 0x1740eef00, identifier = 4872623B-F872-443A-8A96-F4E1F84D6841, name = GoDoor in :), state = disconnected>
【问题讨论】:
您确认您的if
测试通过了吗?通常您会保存您感兴趣的设备的identifier
,而不是查看广告数据。
是的。日志打印“确实发现外围设备”。当我在 central.connect 之后打印一些东西时,它会打印在日志中。好像 central.connect 没有执行。@Paulw11
_peripheral
是如何声明的?您是否实现了didFailToConnect
委托方法以防连接失败?
现在我可以做功能 didConnect 外围设备,由于“”符号而失败。它必须是:func centralManager( central: CBCentralManager, didConnect peripheral: CBPeripheral) 感谢@Paulw11 的帮助
【参考方案1】:
我创建了一个演示项目,它会扫描蓝牙 LE 设备并将它们显示在列表中:
在 github 上查看:quickies/BluetoothScanner.ios
截图
【讨论】:
【参考方案2】:我已经解决了这个问题。 只需要改变:
func centralManager(central: CBCentralManager, didConnect peripheral: CBPeripheral)
进入这个:
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
参考:Swift 3: Can't connect to peripheral via BLE
【讨论】:
很好的发现。 Swift 3 中更改的委托方法签名之前也让我很伤心,尽管如此,我在看你的问题时并没有发现这一点。【参考方案3】: @IBAction func btnConnect(_ sender: UIButton)
self.appDelegate.bleManager.stopScan()
self.appDelegate.selectPeripheral = self.arrayPeripheral[sender.tag]
self.appDelegate.bleManager.connect(self.selectPeripheral, options: nil)
【讨论】:
以上是关于如何在 ios swift 中连接蓝牙低功耗?的主要内容,如果未能解决你的问题,请参考以下文章