verbinden Ich machte App auf iOS 9, die finden und verbindet sich mit BLE. Aber wenn ich es auf iOS 8 laufe passiert nichts. Es findet nichts. Warum? Ich denke, es sollte auf func centralManagerDidUpdateState(central: CBCentralManager)
in if (central.state == CBCentralManagerState.PoweredOn)
Fall laufen. Aber wenn ich es ausführe, wird diese Funktion nicht aufgerufen. Auf iOS 9 funktioniert es einwandfrei und nennt das func.iOS 8 Verbindung zu BLE nicht möglich. Kann in iOS 9
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?) {
}
}
Vergewissern Sie sich, dass das Ziel, für das Sie es kompilieren, der Plattform entspricht, auf der Sie es ausführen möchten. Ich hatte ein paar Probleme mit Code wie diesem. Also, wenn es ein iPad mit 8.x ist, stellen Sie sicher, dass Sie es für 8.x kompilieren. – user3069232