2014-09-20 19 views
6

Więc czytając dokumentację CBPeripheralDelegate, wydaje się, że RSSI i peripheralDidUpdateRSSI:error: były przestarzałe z iOS 8.iOS 8 CoreBluetooth przestarzałe metody RSSI

zauważyłem, że mój wskaźnik siły sygnału nie jest już aktualizowany, więc zrobiłem kilka badań i znalazł nową metodę ([CBPeripheralDelegate peripheral:didReadRSSI:error:]), która podobno zostanie wywołana asynchronicznie po wywołaniu metody readRSSI. Niestety ta metoda nie wydaje się być wywoływana ponownie, mimo że ustawiłem klasę nadrzędną jako delegata CBPeripheral.

Czy ktoś jeszcze miał problemy z aktualizacjami systemu iOS 8 CoreBluetooth?

Odpowiedz

9

Istnieje znany problem, który został zamieszczony na tej stronie na forach programistów Apple, do których również mam otwarty radar.

Problem polega na tym, że nowa metoda wywołania zwrotnego peripheral:didReadRSSI:error: nigdy nie jest wywoływana w systemie iOS 8 po wstępnym połączeniu z urządzeniem peryferyjnym. Jedyne rozwiązanie, jakie udało mi się znaleźć, to zresetować Bluetooth w telefonie, włączając go/wyłączając lub ponownie uruchamiając telefon.

Here is the link to open radar I filed.

UPDATE:

tylko przetestowane moim przykładem, który został wyświetlające ten problem z bieżącym wydaniu 8.2, a ja już nie widać żadnych problemów z nowymi iOS 8 metoda delegat nie miano. Oznaczam radar jako rozwiązany zgodnie z wydaniem 8.2.

+1

Zobacz dokładnie ten sam problem na iOS 8.1.3. –

+0

Testowałem każdą wersję beta, a kolejna, nadchodząca, wydaje się, że problem został rozwiązany. –

-1

Działa ponownie w iOS 8.0.2!

użyj [myPeripheral readRSSI];

1

Działa iOS 8.0.2, ale teraz jest dławiony. Wysyłam readRSSI co 200ms i otrzymuję odpowiedź tylko raz na sekundę. To działało dobrze z iOS 7.1.

5

W iOS 8.1.1, peripheral:didReadRSSI:error: zostanie wywołany tylko dla urządzeń peryferyjnych, z którymi jesteś połączony. Jeśli odkryłeś tylko urządzenia peryferyjne ze skanowaniem, a następnie zadzwoniłeś pod numer readRSSI, wywołanie zwrotne nie zostanie wywołane.

Spróbuj najpierw połączyć się z urządzeniem peryferyjnym (poprzez CBCentralManager 's connectPeripheral:options:), a następnie wywołując readRSSI.

+2

Nie zapewnia to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem - zawsze możesz komentować swoje posty, a gdy już masz wystarczającą [reputację] (http://stackoverflow.com/help/whats-reputation), być w stanie [komentować dowolny wpis] (http://stackoverflow.com/help/privileges/comment). –

+4

Właściwie to zapewnia odpowiedź na pytanie. Jego pytanie dotyczyło 'peripheral: didReadRSSI: error:' nie został wywołany i zapytał, czy ktoś inny miał z nim problemy. Miałem problemy z tym i znalazłem rozwiązanie do robienia połączenia CoreBluetooth, który deleguje metodę w iOS 8: połączyć się z urządzeniem peryferyjnym. –

+0

Powoduje to powodzenie tylko przy pierwszym połączeniu z urządzeniem peryferyjnym i wywołaniu [peripheral readRSSI]. Każde kolejne połączenie nie wywoła metody delegata didReadRSSI. –

Powiązane problemy