iOS 8无法连接到BLE。可以在iOS 9中连接到

iOS 8无法连接到BLE。可以在iOS 9中连接到,ios,swift,core-bluetooth,bluetooth-lowenergy,Ios,Swift,Core Bluetooth,Bluetooth Lowenergy,在iOS 9上制作了一个可以查找并连接到BLE的应用程序。但当我在iOS 8上运行它时,什么也没发生。它什么也没找到。我想它应该在if(central.state==CBCentralManagerState.PoweredOn)案例中的func-centralManagerDidUpdateState(central:CBCentralManager)上运行。但是当我运行它的时候,这个函数没有被调用。在iOS 9上,它工作正常,并调用func import CoreBluetooth impo

在iOS 9上制作了一个可以查找并连接到BLE的应用程序。但当我在iOS 8上运行它时,什么也没发生。它什么也没找到。我想它应该在
if(central.state==CBCentralManagerState.PoweredOn)
案例中的
func-centralManagerDidUpdateState(central:CBCentralManager)
上运行。但是当我运行它的时候,这个函数没有被调用。在iOS 9上,它工作正常,并调用func

import CoreBluetooth
import Foundation

class BeaconConnection: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {

private static var connectedBeacon: BeaconConnection?

static func sharedInstance() -> BeaconConnection {
    if connectedBeacon == nil {
        connectedBeacon = BeaconConnection()
    }
    return connectedBeacon!
}

let centralManager = CBCentralManager()
var connectedPeripheral:CBPeripheral?
var peripherals: Array<CBPeripheral> = Array<CBPeripheral>()

func initializer() {
    centralManager.delegate = self
}

func connectToPeripheral(index: Int) {
    print(peripherals[index])
    connectedPeripheral = peripherals[index]
    centralManager.stopScan()
    connectedPeripheral!.delegate = self
    centralManager.connectPeripheral(connectedPeripheral!, options: nil)
}

func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
    print(peripheral)
    if !peripherals.contains(peripheral) {
        peripherals.append(peripheral)
    }
}

func centralManagerDidUpdateState(central: CBCentralManager) {
    print("centralManagerDidUpdateState")
    if (central.state == CBCentralManagerState.PoweredOff) {
        print("CoreBluetooth BLE hardware is powered off")
    }
    else if (central.state == CBCentralManagerState.PoweredOn) {
        print("CoreBluetooth BLE hardware is powered on and ready")
        self.centralManager.scanForPeripheralsWithServices(nil, options: nil)
    }
    else if (central.state == CBCentralManagerState.Unauthorized) {
        print("CoreBluetooth BLE state is unauthorized")
    }
    else if (central.state == CBCentralManagerState.Unknown) {
        print("CoreBluetooth BLE state is unknown")
    }
    else if (central.state == CBCentralManagerState.Unsupported) {
        print("CoreBluetooth BLE hardware is unsupported on this platform")
    }
}

func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
    print("didConnectPeripheral")
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

func centralManager(central: CBCentralManager, didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {
    print("failed to connect")
}

func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?) {
    print("didDisconnectPeripheral")
}

func centralManager(central: CBCentralManager, willRestoreState dict: [String : AnyObject]) {
    print("willRestoreState")
}

func peripheral(peripheral: CBPeripheral, didDiscoverServices error: NSError?) {
    for service in peripheral.services! {
        peripheral.discoverCharacteristics(nil, forService: service)
    }
}

func peripheral(peripheral: CBPeripheral, didDiscoverCharacteristicsForService service: CBService, error: NSError?) {

}
}
导入核心蓝牙
进口基金会
类BeaconConnection:NSObject、CBCentralManagerDelegate、cbperipheraldegate{
专用静态var连接信标:BeaconConnection?
静态函数sharedInstance()->BeaconConnection{
如果已连接信标==nil{
connectedBeacon=BeaconConnection()
}
返回已连接的信标!
}
设centralManager=CBCentralManager()
var connectedPeripheral:CBPeripheral?
var外围设备:数组=数组()
func初始值设定项(){
centralManager.delegate=self
}
func connectToPeripheral(索引:Int){
打印(外围设备[索引])
connectedPeripheral=外围设备[索引]
centralManager.stopScan()
已连接外围设备!.delegate=self
centralManager.connectPeripheral(connectedPeripheral!,选项:nil)
}
func centralManager(central:CBCentralManager、DidDiscoveryPeripheral:CBPeripheral、advertisementData:[字符串:AnyObject],RSSI:NSNumber){
打印(外围设备)
if!peripherals.contains(外围设备){
外围设备。附加(外围设备)
}
}
func CentralManager数据库状态(中心:CBCentralManager){
打印(“CentralManagerDipDateState”)
if(central.state==CBCentralManagerState.PoweredOff){
打印(“蓝牙核心硬件已关闭”)
}
else if(central.state==CBCentralManagerState.PoweredOn){
打印(“蓝牙核心硬件已通电并准备就绪”)
self.centralManager.scanForPeripheralsWithServices(无,选项:无)
}
else if(central.state==CBCentralManagerState.Unauthorized){
打印(“核心状态未经授权”)
}
else if(central.state==CBCentralManagerState.Unknown){
打印(“核心状态未知”)
}
else if(central.state==CBCentralManagerState.Unsupported){
打印(“此平台不支持蓝牙核心硬件”)
}
}
func centralManager(中心:CBCentralManager,didConnectPeripheral:CBPeripheral){
打印(“DidConnectPeripal”)
peripheral.delegate=self
外围设备。发现服务(无)
}
func centralManager(central:CBCentralManager,DID未能连接外围设备:CBPeripal,错误:N错误?){
打印(“连接失败”)
}
func centralManager(中心:CBCentralManager,DidDisconnect外围设备:CBPeripheral,错误:N错误?){
打印(“DidDisconnect外围设备”)
}
func centralManager(中心:CBCentralManager,willRestoreState dict:[字符串:AnyObject]){
打印(“遗嘱”)
}
func外围设备(外围设备:CBPeripal,didDiscoverServices错误:NSError?){
用于外围服务。服务{
外围设备。发现特征(无,服务:服务)
}
}
func外围设备(外围设备:CBPeripal,DidDiscoveryCharacteristicsForService服务:CBService,错误:NSError?){
}
}
故障就在这里

centralManager.delegate = self
在iOS 9中它可以工作,但在iOS 8中应该是这样

centralManager = CBCentralManager(delegate: self, queue: nil)
甚至可以删除这个函数

func initializer() {
centralManager.delegate = self
}
然后像这样写

override init() {
    super.init()
    centralManager = CBCentralManager(delegate: self, queue: nil)
}
错就在这里

centralManager.delegate = self
在iOS 9中它可以工作,但在iOS 8中应该是这样

centralManager = CBCentralManager(delegate: self, queue: nil)
甚至可以删除这个函数

func initializer() {
centralManager.delegate = self
}
然后像这样写

override init() {
    super.init()
    centralManager = CBCentralManager(delegate: self, queue: nil)
}

确保编译它的目标与尝试运行它的平台匹配。我对这样的代码有一些问题。因此,如果是运行8.x的iPad,请确保编译为8.x版本。确保编译它的目标与尝试运行它的平台匹配。我对这样的代码有一些问题。因此,如果它是运行8.x的iPad,请确保编译为8.x。