gpt4 book ai didi

swift3 - didDiscover外设未调用

转载 作者:行者123 更新时间:2023-11-30 12:42:47 24 4
gpt4 key购买 nike

我想使用 CBCentralManager 来查找我周围的蓝牙低功耗外围设备。 CentralManager 正在启动,它正确启动并且正在扫描。但 didDiscover 函数从未被调用。我阅读了有关此问题和类似问题的所有其他帖子,并且 99% 确定我的问题没有相同的原因。尽管如此,我还是找不到我做错了什么。

import Foundation
import CoreBluetooth

@objc(SmallerBeaconServiceImpl)
class SmallerBeaconServiceImpl : NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {

private let centralManager : CBCentralManager

func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == CBManagerState.poweredOn && isRunning {
startScanningForPeripherals()
}
print("updated state: \(central.state)")
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print(peripheral.name ?? "no name")
}

func startScanningForPeripherals() {
if centralManager.state != CBManagerState.poweredOn {
return
}

centralManager.scanForPeripherals(withServices: nil, options: nil)
print("is scanning: \(centralManager.isScanning)")
}


private(set) var isRunning = false

func startListening() {
if isRunning {
return
}

isRunning = true

print("started.")
startScanningForPeripherals()
}

func stopListening() {
if !isRunning {
return
}
isRunning = false

centralManager.stopScan()
}

override init() {
centralManager = CBCentralManager()
super.init()

print("initiated")
}
}

最佳答案

可选 funccentralManager(_central: CBCentralManager, didDiscovereripheral: CBPeripheral,advertisementData: [String : Any], rssi RSSI: NSNumber) 是一个 CBCentralManagerDelegate 方法。

您的类 SmallerBeaconServiceImplCBCentralManagerDelegate 兼容,但您没有设置 centralManager delegate (CBCentralManagerDelegate)属性。这就是为什么不调用 centralManager(_central:didDiscover:advertisementData:rssi) 的原因。

可以通过以下方式修复此问题:

centralManager = CBCentralManager(delegate: self, queue: nil)

关于swift3 - didDiscover外设未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036749/

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