iOS 7 CoreBluetooth retrievePeripheralsWithIdentifiers nicht abrufen

8

Ich habe ein Problem mit der Aktualisierung meines CoreBluetooth-Codes von iOS 6 auf iOS 7. Ich kann nach Peripheriegeräten suchen und Verbindungen herstellen. Allerdings kann ich ein Peripheriegerät nicht mit den neuen CoreBluetooth-Methoden von iOS 7 erneut verbinden ein Blick darauf, wie ich versuche, die Wiederverbindung zu erreichen:

%Vor%

Dabei ist uuidString die gespeicherte periphere UUID.

Ich komme immer zur NSLog-Anweisung, wo keine Peripheriegeräte verfügbar sind. Ich denke, ich vermisse etwas sehr Offensichtliches und jemand kann mich in die richtige Richtung weisen.

Außerdem habe ich andere Posts über die iOS 7-Update-Probleme mit CoreBluetooth gelesen und habe versucht, das BLE-Gerät und das iOS-Gerät zurückzusetzen, aber ohne Erfolg.

Vielen Dank im Voraus! hörbar

    
Audible 02.10.2013, 18:04
quelle

2 Antworten

5

Es stellte sich heraus, dass mein Fehler darin bestand, wie ich die Kennung des Peripheriegeräts in ein NSString -Format umwandelte, bevor ich eine Nachricht an meine retrievePeripheral-Methode sendete.

Das war der falsche Weg:

%Vor%

Das war der richtige Weg (der in meinem Szenario funktionierte):

%Vor%

Gemäß der Apple-Dokumentation ist die NSUUID -Klasse nicht gebührenfrei mit CoreFoundation CFUUIDRef überbrückt, wie unten beschrieben:

  

Hinweis: Die NSUUID -Klasse ist nicht gebührenfrei mit CoreFoundation CFUUIDRef überbrückt. Verwenden Sie UUID-Zeichenfolgen, um bei Bedarf zwischen CFUUID und NSUUID zu konvertieren. Zwei NSUUID -Objekte sind nicht garantiert vergleichbar durch Zeigerwert (wie CFUUIDRef ist); Verwenden Sie isEqual: , um zwei NSUUID Instanzen zu vergleichen.

Für diejenigen von euch, die eine visuelle Darstellung dessen mögen, was ich hier mache, ist ein Beispiel:)

Die in der Konsole gedruckten Peripheralinformationen:

%Vor%

Die falsche Art, die Kennung des Peripheriegeräts in ein NSString umzuwandeln, ergibt:

%Vor%

Die korrekte Art, die Kennung des Peripheriegeräts in ein NSString umzuwandeln, ergibt:

%Vor%

Ich hoffe, das hilft jemandem auf seiner BLE-Reise und fühlt sich frei, mich zu korrigieren, wenn ich mich in irgendeiner Weise geirrt habe, da ich immer noch dieses Zeug lerne.

Danke!

hörbar

    
Audible 03.10.2013, 13:52
quelle
1

Dies ist ein alter Beitrag, aber für andere, die nach Antworten suchen.

Der zweite / nächste Aufruf von retrieveConnectedPeripherals benötigt tatsächlich die Dienst-UUID (CBUUID-Typ), nicht die erstmalig verbundene iOS-NSUUID. Was abgerufen wird, ist eine Liste und Peripheriegeräte, bei denen diese Dienst-UUID implementiert ist. Zum Beispiel, wenn Sie eine Anzahl von Aktivitätsarmbändern haben und alle Ihren benötigten Herzschlagdienst unter anderem haben, werden Sie alle 3 Peripheriegeräte abrufen. Auch beim ersten Aufruf von BEKANNTEN Peripheriegeräten müssen Sie die NSUUID zwischen den App-Starts speichern, da diese ID beim ersten Verbinden von iOS erstellt wird. Hoffe das hilft

    
Windshield 10.01.2015 16:35
quelle