2012-12-29 7 views
6

Mam problem z ustaleniem sposobu odbierania reklam urządzeń peryferyjnych Bluetooth LE, podczas gdy moja aplikacja działa w tle. Oznacza to, że gdy moja aplikacja jest w tle, nigdy nie dociera ona do metody didDiscoverPeripheral() - w której znajduje się reklama .. Czy ktoś wie, jak skonfigurować aplikację, aby uzyskać reklamy Bluetooth LE, gdy moja aplikacja znajduje się w tło? Czy można to zrobić za pomocą odpytywania w wątku, gdy moja aplikacja jest w tle? Uwaga: Chcę otrzymywać reklamy ze wszystkich urządzeń BLE, a nie określonej liczby urządzeń BLE.Używanie interfejsu Core Bluetooth do uzyskiwania komunikatów peryferyjnych Bluetooth LE w tle

Docenić pomocy,

Casey

Odpowiedz

7

robie to z mojej aplikacji.

w tle Tryb CoreBluetooth jest podobno do 55 razy wolniejszy niż interwał reklamy urządzenia peryferyjnego. Aby przyspieszyć, zaprogramowałem urządzenie peryferyjne, aby wyświetlało co 20 ms przez pierwsze 30 sekund.

Należy również zdefiniować "Tryb wymagany w tle" z "Aplikacja komunikuje się za pomocą CoreBluetooth" w projekcie Cele -> Informacje.

Znalezienie urządzeń peryferyjnych w tle trwa trochę dłużej.

+1

Doceniam twoją pomoc. Wypróbuję to, jak tylko wrócę do domu i dam ci znać, czy to działa. Aby się upewnić, że Twoja aplikacja dotrze do metody didDiscoverPerirectal(), jest poprawna? Z kolei pozwolenie twojej aplikacji na parsowanie reklamy urządzeń peryferyjnych. – CaseyG

+0

Hmm, nadal nie mogłem jej uruchomić. Zmieniłem interwał reklamowy na 20 ms, jak zauważyłeś. Myślę, że moim problemem może być to, że używam nieograniczonego skanowania (np. ScanForPeripherals: zero opcji: options), a nie ograniczonego skanowania. iOS może anulować nieograniczoną liczbę skanów, gdy aplikacja znajdzie się w tle, którą ktoś określił [tutaj] (http://stackoverflow.com/questions/9896562/what-exactly-can-corebluetooth-applications-do-wha--the-thebackback) . Czy korzystasz z nieograniczonego skanowania lub jesteś ograniczony? Chciałbym użyć nieograniczonej dla mojej aplikacji - jeśli to możliwe. Dzięki za pomoc. – CaseyG

+0

Ok, mam to działa. Musisz korzystać z ograniczonego skanowania i musisz ustawić interwał około 20 ms, jak wspomniałeś henrik. Dzięki. – CaseyG