Swift3 我没打电话

Swift3 我没打电话,swift3,core-bluetooth,Swift3,Core Bluetooth,我想使用CBCentralManager查找我周围的蓝牙低能耗外围设备。centralManager已启动,它已正确启动并正在扫描。但是didDiscover函数从未被调用。我阅读了所有其他关于这个问题和类似问题的帖子,99%确信我的问题的原因不一样。不过,我还是找不到我做错了什么 import Foundation import CoreBluetooth @objc(SmallerBeaconServiceImpl) class SmallerBeaconServiceImpl : NSO

我想使用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")
    }
}

可选的func-centralManager(uucentralmanager:CBCentralManager,didDiscover-peripheral:CBPeripheral,advisementdata:[String:Any],rssi-rssi:NSNumber)
是一种
CBCentralManager-elegate
方法

您的类
SmallerBeaconServiceImpl
符合
CBCentralManagerDelegate
,但您没有设置
centralManager
委托(
CBCentralManagerDelegate
)属性。这就是为什么不调用
centralManager(_central:didDiscover:advertisementData:rssi)

这可以通过以下方式解决:

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

您没有设置
centralManager
@Larme的委托人:我肯定会将其添加为一个答案,这样它就可以被接受。这肯定有帮助。非常感谢。我很乐意把这个标记为正确答案!