2013-06-14 14 views
14

Wciąż dostaję ten błąd, gdy uruchamiam moją aplikację, która korzysta CoreBluetooth na iPhone 5: <CBConcreteCentralManager: 0x2007d590> is not powered onKiedy stan CBCentralManager zostanie włączony, ale nadal będzie wyświetlać ostrzeżenie "brak zasilania"?

Ale gdy zgłoszę state na mój program za jedynego obiektu CBCentralManager, zwraca 5, który jest CBCentralManagerStatePoweredOn. Jest włączony, ale pojawia się ten błąd. Bluetooth telefonu iPhone jest również włączony.

Na ogół, kiedy to się kiedykolwiek stanie? Nie wiem nawet, co się dzieje, gdy program działa, ponieważ dostaję coś, co wygląda na sprzeczne wiadomości.

Odpowiedz

22

Musisz poczekać, aż centralny menedżer otrzyma wywołanie zwrotne od centralManagerDidUpdateState: po uruchomieniu aplikacji. Następnie co drugi raz, zalecam sprawdzenie stanu przed wykonaniem jakichkolwiek wywołań centralManager. Najprawdopodobniej wywołujesz skanowanie lub pobieranie zanim centrala ma szansę na aktualizację. Upewnij się, że wywołujesz metody tylko wtedy, gdy wiesz, że jest włączony. Nie dostaniesz błędu, jeśli zawijasz każde wywołanie, jeśli instrukcje sprawdzają stan jako pierwszy.

- (void)centralManagerDidUpdateState:(CBCentralManager *)central 
{ 
    if(central.state==CBCentralManagerStatePoweredOn) 
    { 
     //Now do your scanning and retrievals 
    } 
} 

W przeciwnym razie po prostu owinąć centralny wewnątrz kontroli państwowej przed każdym wywołaniu:

if(yourCentral.state==CBCentralManagerStatePoweredOn) 
{ 
//you're good to go on calling centralManager methods 
} 
+0

Tak, to był problem. Dzięki. – sudo

+0

To rozwiązało problem, dziękuję. Z jakiegoś powodu zaczęło mi się to dziać po uaktualnieniu do symulatora GM Xcode 5. – Dan

+1

Jestem prawie pewien, że Apple nie obsługuje już wsparcia symulatora BLE w Xcode 5 –

Powiązane problemy