gpt4 book ai didi

swift - 外围设备未连接 - Swift

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:14 26 4
gpt4 key购买 nike

在我的 Swift 应用程序中,我有一个 View 可以找到蓝牙设备并连接到它。蓝牙设备已开机。我能够扫描并找到该设备,之后我调用该功能连接到它,但我没有得到任何反馈。我不确定为什么无法连接。

didFailToConnectPeripheral 或 didConnectPeripheral 均未返回任何值。

我如何让它工作?

import UIKit
import CoreBluetooth

class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {

var manager: CBCentralManager!


override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager (delegate: self, queue: nil)
}


func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {

print("Peripheral: \(peripheral)")

manager.connectPeripheral(peripheral, options:nil)

manager.stopScan()

}



func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
print("connected!")
}

func centralManager(central: CBCentralManager, didDisconnectPeripheral
peripheral: CBPeripheral, error: NSError?) {
print("disconnected!")
}


func centralManager(central: CBCentralManager,
didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {
print("failed")
}


func centralManagerDidUpdateState(central: CBCentralManager) {
print("Checking")
switch(central.state)
{
case.Unsupported:
print("BLE is not supported")
case.Unauthorized:
print("BLE is unauthorized")
case.Unknown:
print("BLE is Unknown")
case.Resetting:
print("BLE is Resetting")
case.PoweredOff:
print("BLE service is powered off")
case.PoweredOn:
print("BLE service is powered on")
print("Start Scanning")
manager.scanForPeripheralsWithServices(nil, options: nil)
default:
print("default state")
}
}
}

最佳答案

您需要保留您尝试连接的 CBPeripheral 对象,否则一旦委托(delegate)方法 didDiscoverPeripheral 返回,它就会被释放。

import UIKit
import CoreBluetooth

class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {

var manager: CBCentralManager!
var connectingPeripheral: CBPeripheral?


override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager (delegate: self, queue: nil)
}


func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {

print("Peripheral: \(peripheral)")

self.connectingPeripheral=peripheral

manager.connectPeripheral(peripheral, options:nil)

manager.stopScan()
}

...

}

关于swift - 外围设备未连接 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026093/

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