CBperipheral UUID ist in ios 6.0.1 auf i-phone5 null

9

Nun, ich habe eine Anwendung, die mit einem Bluetooth-Gerät unter iOS 6.0.1, aber auf iPhone 4s scannt und verbindet, und es funktioniert gut. Beim Hochladen der Anwendung in den Apple Store, geben sie mir einen Programmabsturz, Fledermausprogrammierung, aber ich verstehe nur den Absturz, wenn ich die Anwendung auf einem iphone5 versuche, wo das

%Vor%

gib mir ein Peripheriegerät mit null Uuid zurück.

Ich drucke das Peripheriegerät, den Namen, die UUID, das Rssi und die AdvertData, alles ist gut, aber die UUID ist Null, und ich benutze die UUID in der Anwendung. Das führt dazu, dass meine Anwendung zum Absturz gebracht wird. Ich kann die Null-UUID steuern, und das bedeutet, dass ich die Anwendung nicht steuern kann.

Jemand weiß, was passiert, und eine mögliche Lösung?

    
Manelonix 04.12.2012, 23:41
quelle

3 Antworten

2
___ answer16894179 ___

Es scheint sich um eine Bug / Feature-Erweiterung in iOS 6 zu handeln, die sich aufgrund des asynchronen Charakters des Codes auf dem iPhone 5 bemerkbar macht. Ich habe auch Code, der auf dem 4S, aber nicht auf dem 5 funktioniert.

Die von den meisten Leuten gestellte Problemumgehung besteht darin, sicherzustellen, dass Sie sich mit jedem Gerät verbinden, das Sie finden, wenn Sie es finden. Die Erklärung ist, dass die UUID erst zugewiesen wird, wenn eine Verbindung hergestellt wurde.

Sie können ein Beispiel dafür im TI-Sensor-Tag-Code sehen, den Sie von der TI-Site herunterladen können

%Vor%

Es ist jedoch auffällig, dass Sie auch Folgendes tun können

%Vor%

als %code% wird mehr als einmal für jedes Gerät (ich sehe es zweimal auf dem iPhone 5 genannt) und das zweite Mal die Peripheriedetails sind abgeschlossen.

    
___ qstntxt ___

Nun, ich habe eine Anwendung, die mit einem Bluetooth-Gerät unter iOS 6.0.1, aber auf iPhone 4s scannt und verbindet, und es funktioniert gut. Beim Hochladen der Anwendung in den Apple Store, geben sie mir einen Programmabsturz, Fledermausprogrammierung, aber ich verstehe nur den Absturz, wenn ich die Anwendung auf einem iphone5 versuche, wo das

%Vor%

gib mir ein Peripheriegerät mit null Uuid zurück.

Ich drucke das Peripheriegerät, den Namen, die UUID, das Rssi und die AdvertData, alles ist gut, aber die UUID ist Null, und ich benutze die UUID in der Anwendung. Das führt dazu, dass meine Anwendung zum Absturz gebracht wird. Ich kann die Null-UUID steuern, und das bedeutet, dass ich die Anwendung nicht steuern kann.

Jemand weiß, was passiert, und eine mögliche Lösung?

    
___ antwort13799904 ___

Was wir tun müssen, ist das nächste: Sie können das periphere Objekt nicht mit einem NSLog schreiben, aber wir können die periphere UUID-Eigenschaft nicht haben, bevor die Verbindung ausgeführt wurde. Es war immer Null. Wir fragen nach der UUID, wenn die gelesenen Dienste beendet wurden, nicht vorher, und dann können wir die Anwendungen auf i-phone5 nicht ohne Absturz ausführen.

Ich habe es auf TI (Texas Instruments) gelesen, dass es ein IOS-Bug war, aber ich denke, es ist ein ble Sicherheitsupdate, wir müssen uns verbinden, bevor wir nach der UUID fragen.

    
___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Features beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die zugehörigen Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___ tag123ios6 ___ iOS 6 wurde am 11. Juni 2012 von Apple angekündigt und am 19. September 2012 veröffentlicht. Es läuft alle iPhones ab 3GS. ___ tag123iphone5 ___ Das iPhone 5 ist die sechste Version des iPhones von Apple, Inc. Verwenden Sie dieses Tag für Fragen, die für diese Plattform spezifisch sind. ___ tag123corebluetooth ___ CoreBluetooth ist ein Framework für iOS und Mac OS X zur Interaktion mit Bluetooth Low Energy ("BLE") - Zubehör. ___ tag123bluetoothlowenergy ___ Bluetooth Low Energy ("BLE") ist ein neuer Funkstandard, der 2006 eingeführt wurde. Bluetooth Low Energy wird auch als Bluetooth Smart bezeichnet und ist eine Teilmenge von Bluetooth v4.0. ___ qstnhdr ___ CBperipheral UUID ist in ios 6.0.1 auf i-phone5 null ___ answer13962412 ___

Nach der ersten Verbindung wird die UUID vom Gerät gespeichert / zwischengespeichert. Wenn zu einem späteren Zeitpunkt das gleiche Peripheriegerät erkannt wird, ist die UUID vor der Verbindung verfügbar. Sie können nach allen gespeicherten Peripheriegeräten fragen, indem Sie "retrievePeripherals" aufrufen.

    
___
Manelonix 10.12.2012 11:17
quelle
1

Nach der ersten Verbindung wird die UUID vom Gerät gespeichert / zwischengespeichert. Wenn zu einem späteren Zeitpunkt das gleiche Peripheriegerät erkannt wird, ist die UUID vor der Verbindung verfügbar. Sie können nach allen gespeicherten Peripheriegeräten fragen, indem Sie "retrievePeripherals" aufrufen.

    
shusson 19.12.2012 22:36
quelle
0

Es scheint sich um eine Bug / Feature-Erweiterung in iOS 6 zu handeln, die sich aufgrund des asynchronen Charakters des Codes auf dem iPhone 5 bemerkbar macht. Ich habe auch Code, der auf dem 4S, aber nicht auf dem 5 funktioniert.

Die von den meisten Leuten gestellte Problemumgehung besteht darin, sicherzustellen, dass Sie sich mit jedem Gerät verbinden, das Sie finden, wenn Sie es finden. Die Erklärung ist, dass die UUID erst zugewiesen wird, wenn eine Verbindung hergestellt wurde.

Sie können ein Beispiel dafür im TI-Sensor-Tag-Code sehen, den Sie von der TI-Site herunterladen können

%Vor%

Es ist jedoch auffällig, dass Sie auch Folgendes tun können

%Vor%

als didDiscoverPeripheral wird mehr als einmal für jedes Gerät (ich sehe es zweimal auf dem iPhone 5 genannt) und das zweite Mal die Peripheriedetails sind abgeschlossen.

    
Longmang 03.06.2013 09:59
quelle