gpt4 book ai didi

iOS 蓝牙委托(delegate)连接功能未被调用

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:34 25 4
gpt4 key购买 nike

我正在尝试监听所有蓝牙连接/断开连接事件。即使委托(delegate)的 centralManagerDidUpdateState 函数被调用,当我连接或断开蓝牙设备时也没有任何反应。

我对出了什么问题感到困惑。我这样初始化中央管理器/委托(delegate):

var btDelegate: CBCentralManagerDelegate = BluetoothDelegate()
var btManager = CBCentralManager(delegate: btDelegate, queue: nil)

BluetoothDelegate 的定义如下:

import Foundation
import CoreBluetooth

class BluetoothDelegate : NSObject, CBCentralManagerDelegate {

func centralManager(central: CBCentralManager!, didConnectPeripheral peripheral: CBPeripheral!) {
println("connect") //this line is not called
}
func centralManager(central: CBCentralManager!, didDisconnectPeripheral peripheral: CBPeripheral!, error: NSError!) {
println("disconnect") //this line is not called
}

func centralManagerDidUpdateState(central: CBCentralManager!) {
println("state update") //this line is called
}
}

注意:我可以连续接收更多状态更新事件,例如当我切换蓝牙时,即使未调用连接和断开连接也是如此。

最佳答案

从您的代码看来您还没有开始扫描外围设备。通过 centralManagerDidUpdateState 方法确认您的中央处理器处于开机状态后,您应该开始扫描外围设备。

(您从蓝牙设置面板连接的蓝牙设备无关紧要。您无法访问它们。(据我所知)如果您想扫描并找出您的设备您自己的以下代码会有所帮助)

func centralManagerDidUpdateState(central: CBCentralManager!) {
switch (central.state) {
case CBCentralManagerState.PoweredOff:
break
case CBCentralManagerState.PoweredOn:
startScan() // start scanning once the bluetooth is On
break
default:
break
}
}

你的 startScan 方法将是(你可以提供服务 UUID,如果你想要全部,请使用 nil )

func startScan(){
if let central = btManager {
central.scanForPeripheralsWithServices(nil, options: nil)
println("started Scanning")
}
}

之后,每当您发现外围设备时,didDiscoverPeripheral 方法将首先被调用。

func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
println(peripheral)
// btManager.connectPeripheral(peripheral, options: nil)
}

从那里您收集外设,然后调用CBCentralManagerconnectPeripheral 方法。如果连接成功,将调用 didConnectPeripheral 方法。

你应该通过this documentation完整的细节

关于iOS 蓝牙委托(delegate)连接功能未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356627/

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