0

Ich benutze CoreBluetooth für iOS-App, nach der Aktualisierung der IOS-Version der zentrale Manager kann keine Verbindung zu Peripheriegeräten und zeigt keinen Fehler. Bevor te Prozess zu verbinden beginnen empfangen I diese Werte von der Vorrichtung:Peripheriegerät immer Zustand Verbindung und nie nach dem Upgrade auf IOS 11

CBPeripheral: 0x1c0106e40, identifier = BE2B06BF-F385-82AC-95E6-65EA1CF8B11F, name = icomon, state = abgeklemmt

und nachdem ich versuchen, das Gerät wechselt der Zustand zu verbinden:

CBPeripheral: 0x1c411bea0, Kennung = BE2B06BF-F385-82AC-95E6-65EA1CF8B11F, name = icomon, state = Verbindungs ​​

und nichts mehr, nichts passiert als nächstes, ich bekomme keine Daten vom zentralen Manager und den Gerätezustand nie ändern.

+0

Bitte [bearbeiten] (https://stackoverflow.com/posts/46366577/edit) Ihre Frage relevanten Code anzuzeigen – Paulw11

Antwort

0

Ich hatte mit einem Problem zu kämpfen, das genau die gleichen Symptome hat. Hoffentlich ist es das gleiche Problem, und diese Antwort ist hilfreich.

In meinem Fall wurde das Problem von einer Link-Layer-Steuerungs-PDU verursacht, die mein Gerät sofort nach dem Herstellen der Verbindung gesendet hat. Insbesondere führe ich Apache Mynewt (http://mynewt.apache.org/) aus, und sein NimBLE-Controller initiiert das Feature Exchange Procedure sofort, nachdem eine Verbindung hergestellt wird. Da mein Gerät das Peripheriegerät ist, während das iOS 11-Gerät das zentrale Gerät ist, sendet mein Gerät die LL_SLAVE_FEATURE_REQ PDU.

Ich weiß nicht, ob es das Timing ist oder die PDU selbst, aber in jedem Fall sendet das iOS-Gerät niemals Anwendungsschichtdaten nach dem Feature-Austausch. Wenn ich NimBLE so ändere, dass der Feature-Austausch nicht initiiert wird, findet die Geräteabfrage normal statt und der mit CoreBluetooth verbundene Rückruf wird angerufen.

Verwandte Themen