Vermeiden Sie das Erkennen von Diensten und Merkmalen bei einer erneuten Verbindung in CoreBluetooth

9

Ich arbeite an einer CoreBluetooth Manager App für ein iPhone. Um die Verbindung zu einem zuvor entdeckten CBPeripheral wiederherzustellen, speichere ich die UUID des Peripheriegeräts (in CoreData) und rufe CBCentralManager retrievePeripherals: auf. Mein didRetrievePeripherals: Callback wird aufgerufen und ich kann mich verbinden usw. So weit so gut.

Da ich mich wieder mit einem Peripheriegerät verbinde, das ich bereits kenne, möchte ich vermeiden, seine Dienste und Eigenschaften zu entdecken. Daher speichere ich die UUIDs der Dienste und Merkmale (wiederum in CoreData zusammen mit der UUID des Peripheriegeräts), wenn ich mich das erste Mal verbinde.

Aber ich kann diese UUIDs nicht verwenden, um die Merkmale zu lesen oder zu schreiben, weil CBPeripherals readValueForCharacteristic: oder writeValueForCharacteristic: ein CBC-Merkmal als Parameter verwendet und es keine API gibt, um eine CBC-typische Instanz zu konstruieren.

Gibt es eine Möglichkeit, die Erkennung von Diensten und Merkmalen während der Verbindung mit einem bereits bekannten Peripheriegerät zu vermeiden?

    
mezulu 24.10.2012, 16:38
quelle

1 Antwort

3

Mezulu, Sie möchten einen verschlüsselten / gepaarten Link verwenden - dann übernimmt iOS das Caching für Sie. Siehe meine Antwort hier .

    
William henderson 01.05.2013, 21:31
quelle

Tags und Links