Я пытаюсь написать приложение для командной строки, которое использует инфраструктуру CoreBluetooth.
Я уже видел CoreBluetooth на Mac Приложение командной строки однако, когда я попытался следовать принятому советуМоя программа работала иначе, чем когда я сделал это с Какао.
Код для приложения командной строки:
import Foundation
import CoreBluetooth
class MyBluetoothClient : NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var manager: CBCentralManager!
override init() {
super.init()
manager = CBCentralManager(delegate: self, queue: nil)
print("Launched!")
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
central.scanForPeripherals(withServices: nil)
print("Started scan!")
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("Detected peripheral!")
}
}
_ = MyBluetoothClient()
let runLoop = RunLoop.current
while runLoop.run(mode: RunLoopMode.defaultRunLoopMode, before: NSDate.distantFuture) {}
Единственное, что регистрируется кодом:
Launched
тогда как следующее приложение Какао запустило сканирование и обнаружило несколько периферийных устройств.
import Cocoa
import CoreBluetooth
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, CBCentralManagerDelegate, CBPeripheralDelegate {
@IBOutlet weak var window: NSWindow!
var manager: CBCentralManager!
func centralManagerDidUpdateState(_ central: CBCentralManager) {
central.scanForPeripherals(withServices: nil)
print("Started scan!")
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("Detected peripheral!")
}
func applicationDidFinishLaunching(_ aNotification: Notification) {
manager = CBCentralManager(delegate: self, queue: nil)
print("Launched!")
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
}
Заранее спасибо!