为啥我的 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 上似乎无法正常工作