为啥我的 mac 无法在这个 Core Bluetooth App 中发现设备?

Posted

技术标签:

【中文标题】为啥我的 mac 无法在这个 Core Bluetooth App 中发现设备?【英文标题】:Why won't my mac discover devices in this Core Bluetooth App?为什么我的 mac 无法在这个 Core Bluetooth App 中发现设备? 【发布时间】:2017-08-25 20:16:47 【问题描述】:

我一直在开发 Core Bluetooth Mac 应用程序,但在 Mac 上的发现部分遇到了问题。尽管相同的设备出现在我的 mac 的蓝牙设置中,但此代码未能发现任何设备。显然这是一个代码问题,但我似乎无法弄清楚。代码:

import Cocoa
import CoreBluetooth

class ViewController: NSViewController, CBCentralManagerDelegate 
var centralManager: CBCentralManager!
override func viewDidLoad() 
    super.viewDidLoad()
    centralManager = CBCentralManager(delegate: self, queue: DispatchQueue.main)

    // Do any additional setup after loading the view.


override var representedObject: Any? 
    didSet 
    // Update the view, if already loaded.
    


func setupBT() 



func centralManagerDidUpdateState(_ central: CBCentralManager) 
    var statusMessage = ""
    switch central.state 
    case .poweredOn:
        statusMessage = "Bluetooth Status: Turned On"

    case .poweredOff:
        statusMessage = "Bluetooth Status: Turned Off"

    case .resetting:
        statusMessage = "Bluetooth Status: Resetting"

    case .unauthorized:
        statusMessage = "Bluetooth Status: Not Authorized"

    case .unsupported:
        statusMessage = "Bluetooth Status: Not Supported"

    default:
        statusMessage = "Bluetooth Status: Unknown"
    

    print(statusMessage)


func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) 
    print("Discovered")


它正在打印“打开”但不是“发现”。我尝试了多种蓝牙设备和扬声器。

【问题讨论】:

您还没有告诉 CoreBluetooth 发现任何设备。您需要致电scanForPeripherals 【参考方案1】:

您需要致电scanForPeripherals(withServices:options:) 以发现外围设备。请注意,您必须等待CBCentralManager 处于poweredOn 状态。否则,什么都不会发生,您可能会在控制台中看到一些警告和错误日志。

【讨论】:

以上是关于为啥我的 mac 无法在这个 Core Bluetooth App 中发现设备?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MySQLdb 安装无法在我的 64 位 Mac 上运行

为啥我的 SelectListItem 无法编辑 ASP.NET Core MVC

.Net Core - 无法连接 WCF 服务(在 Mac 上)

为啥mac升级之后,升级成mac OS Sierra 10.12.1,我的parallels Desktop就启动不了,需要重新安装吗?

为啥我的 CBPeripheralManager 有广告但无法被发现?

如何在 asp.net core 中获取项目的根目录。 Directory.GetCurrentDirectory() 在 Mac 上似乎无法正常工作