Ich versuche, alle Bluetooth Verbindung/trennen Ereignisse zu hören. Obwohl die Funktion centralManagerDidUpdateState
des Delegierten aufgerufen wird, passiert nichts, wenn ich Bluetooth-Geräte verbinde oder trenne.iOS Bluetooth Delegate Connect-Funktion nicht angerufen
Ich bin verwirrt, was falsch los ist. Ich initialisieren den Central Manager/Delegierten wie folgt aus:
var btDelegate: CBCentralManagerDelegate = BluetoothDelegate()
var btManager = CBCentralManager(delegate: btDelegate, queue: nil)
BluetoothDelegate wie so definiert:
import Foundation
import CoreBluetooth
class BluetoothDelegate : NSObject, CBCentralManagerDelegate {
func centralManager(central: CBCentralManager!, didConnectPeripheral peripheral: CBPeripheral!) {
println("connect") //this line is not called
}
func centralManager(central: CBCentralManager!, didDisconnectPeripheral peripheral: CBPeripheral!, error: NSError!) {
println("disconnect") //this line is not called
}
func centralManagerDidUpdateState(central: CBCentralManager!) {
println("state update") //this line is called
}
}
Hinweis: Ich kann kontinuierlich mehr Zustandsaktualisierungsereignisse empfangen, wie wenn ich Bluetooth umschalten, obwohl Verbinden und Trennen werden nicht aufgerufen.
ich mich nicht vertraut gemacht habe noch mit, wie Swift verhält, wenn Sie einen Verweis auf eine Basisklasse, sondern eine abgeleitete Klasse Objekt zuweisen - also wenn btDelegate sein sollten Typ BluttoothDelegate statt CBCentralManagerDelegate oder nicht kann ich nicht sagen. Aber wenn Sie keine anderen Antworten bekommen, sollten Sie es versuchen. – Gruntcakes
Ich habe gerade versucht, BluetoothDelegate anstelle von CBCentralManagerDelegate zu verwenden, aber das Verhalten war nicht anders. Es war einen Versuch wert. Danke für die Hilfe! – lakantu
Es ist ein Feld in einer Klasse, die wir verwenden; Ich denke nicht, dass es jemals außer Reichweite gerät. Ich wusste nicht, dass das eine schwache Referenz war - das ist gut zu wissen. – lakantu