【发布时间】:2018-05-21 14:39:19
【问题描述】:
我正在尝试通过一个使用 BLE 的简单应用程序自动连接到我的 AirPods。我得到了设备的名称和“正在连接”的状态,但由于某种原因我无法连接到它。永远不会触发“didConnect 外围设备”函数。
我尝试了教程和其他帖子中的所有不同方法,尝试将外围数据存储在数组中以保留引用,但似乎没有任何效果。
是否有任何步骤可以让我在“didDiscover”和“didConnect”之间获得一些额外的信息?
在 XCode 9.2 中工作,在 iPhone 上使用 Swift 4 和 iOS 11.2。
这是我的代码:
let deviceName = "AirPods de Roger"
var isConnected = false
var manager: CBCentralManager!
var peripheralBLE: CBPeripheral?
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch manager.state {
case.poweredOff:
print("BLE service is powered off")
case.poweredOn:
print("BLE service is powered on and scanning")
manager.scanForPeripherals(withServices: nil, options: nil)
default:
print("BLE service in another state")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if peripheral.name == deviceName && isConnected == false {
self.manager.stopScan()
self.peripheralBLE = peripheral
self.peripheralBLE?.delegate = self
manager.connect(peripheral, options: nil)
isConnected = true
print("\(peripheral.name) pre-connected")
}
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
lblConnected.isHidden = false
print("AirPods Connected")
peripheral.discoverServices(nil)
}
【问题讨论】:
-
你解决了这个问题吗?我有完全相同的问题:S 这真的很烦人
-
你尝试了哪些教程?
-
您是否尝试实现 didFailToConnect() 以获取更多信息?
-
我尝试通过应用商店的 nRFConnect APP 进行连接,但它无论如何都不起作用......似乎很特别
-
@Passe 是的,我做到了,但它从未到达那里
标签: ios swift bluetooth-lowenergy core-bluetooth