macos - corebluetooth - ios bluetooth swift tutorial
Enumerar los dispositivos que se encuentran dentro del alcance del dispositivo Bluetooth en Swift (1)
Para decirle a un área de juegos que su código hace algo en segundo plano, debe import XCPlayground
y llamar a XCPSetExecutionShouldContinueIndefinitely()
.
Esto mantendrá viva la IOBluetoothDeviceInquiry en el patio de recreo y le permitirá llamar al método de delegado cuando haya terminado.
import Cocoa
import IOBluetooth
import XCPlayground
class BlueDelegate : IOBluetoothDeviceInquiryDelegate {
func deviceInquiryComplete(sender: IOBluetoothDeviceInquiry, error: IOReturn, aborted: Bool) {
aborted
println("called")
var devices = sender.foundDevices()
for device : AnyObject in devices {
if let thingy = device as? IOBluetoothDevice {
thingy.getAddress()
}
}
}
}
var delegate = BlueDelegate()
var inquiry = IOBluetoothDeviceInquiry(delegate: delegate)
inquiry.start()
XCPSetExecutionShouldContinueIndefinitely()
Si bien el enfoque anterior funciona, me resulta más fácil crear proyectos de prueba simples y tradicionales para tareas que requieren conceptos como código asíncrono, delegación, ...
Tengo el siguiente código en un patio de Xcode 6:
import Cocoa
import IOBluetooth
class BlueDelegate : IOBluetoothDeviceInquiryDelegate {
func deviceInquiryComplete(sender: IOBluetoothDeviceInquiry, error: IOReturn, aborted: Bool) {
aborted
var devices = sender.foundDevices()
for device : AnyObject in devices {
if let thingy = device as? IOBluetoothDevice {
thingy.getAddress()
}
}
}
}
var inquiry = IOBluetoothDeviceInquiry(delegate: BlueDelegate())
inquiry.start()
Recién estoy empezando con Bluetooth bajo OSX, y todo lo que actualmente deseo es una lista de dispositivos dentro del alcance.
No parece estar llamando a mi método delegado en absoluto.
Soy nuevo en el desarrollo de OSX y Swift, así que sea gentil. :)