【发布时间】:2016-03-11 09:05:13
【问题描述】:
在 10.11.1 下运行 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")
}
}
我用这段代码在视图控制器中调用
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var bleManager: BLEManager!
bleManager = BLEManager()
}
现在我在装有 9.1 的 iPad Air 上运行它,然后插入、拔出并重新插入一个 ibeacon,但控制台上没有显示任何内容,这表明它根本无法正常工作。现在我知道 ibacon 正在工作;因为我使用 Radius Networks 的 ScanBeacon 工具找到了它。
好的,我知道 ibeacons 和 Core Bluetooth 不能很好地结合在一起,但确实应该调用 didDiscoverPeripheral 吗?还是我错过了代码中的关键行?
【问题讨论】:
标签: ios swift bluetooth ibeacon