2015-12-06 3 views
2

Запуск IOS 9.1 с Xcode 7.1.1 в соответствии с 10.11.1. Cut'n'pasted этот код из этого урока; и дважды проверьте его с несколькими другими источниками/сайтами.Bluetooth, поврежденный в IOS 9.1/Xcode 7.1.1

http://hatemfaheem.blogspot.ch/2014/12/how-would-you-scan-for-nearby-ble.html

Это код, у меня есть ...

import Foundation 
import CoreBluetooth 

class BLEManager { 
var centralManager : CBCentralManager! 
var bleHandler : BLEHandler // delegate 
init() { 
    self.bleHandler = BLEHandler() 
    self.centralManager = CBCentralManager(delegate: self.bleHandler, queue: nil) 
} 
} 

class BLEHandler : NSObject, CBCentralManagerDelegate { 
override init() { 
    super.init() 
} 

func centralManagerDidUpdateState(central: CBCentralManager) { 
    switch (central.state) 
    { 
    case .Unsupported: 
     print("BLE is unsupported") 
    case .Unauthorized: 
     print("BLE is unauthorized") 
    case .Unknown: 
     print("BLE is unknown") 
    case .Resetting: 
     print("BLE is reseting") 
    case .PoweredOff: 
     print("BLE is powered off") 
    case .PoweredOn: 
     print("BLE is powered on") 
     central.scanForPeripheralsWithServices(nil, options: nil) 
    default: 
     print("BLE default") 
    } 
} 

func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) { 
    print("didConnectPeripheral") 
} 

func centralManager(central: CBCentralManager!, 
    didDiscoverPeripheral peripheral: CBPeripheral!, 
    adverismentData: [NSObject : AnyObject]!, 
    RSSI: NSNumber!) 
{ 
    print("\(peripheral.name) : \(RSSI) dBm") 
} 
} 

Что я вызываю в View Controller с этим кодом

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    var bleManager: BLEManager! 
    bleManager = BLEManager() 
} 

Теперь я запускаю его на IPad Air с 9.1 и подключите и отсоедините и замените ibeacon, но на консоли ничего не появляется, что говорит о том, что он просто не работает. Теперь я знаю, что ibeacon работает; потому что я нахожу его с помощью инструмента ScanBeacon от Radius Networks.

OK Я понимаю, что ibeacons и Core Bluetooth не сочетаются так хорошо, но верно ли это должно быть вызвано? Или я пропустил кривую в моем коде?

ответ

3

Ваш BLEManager выходит за пределы сферы действия и освобождается в конце viewDidLoad. Дайте ему переменную-член, чтобы дать ей более продолжительный и более полезный срок службы:

+0

Да; как я не мог этого видеть! Теперь он работает на моем iPad! БЛАГОДАРЯ!! – user3069232

Смежные вопросы