2013-06-14 18 views
14

私はiPhone 5にCoreBluetoothを使用しています私のアプリを実行すると、このエラーを取得しておいてください。<CBConcreteCentralManager: 0x2007d590> is not powered onCBCentralManagerの状態はいつ電源が入りますが、まだ「電源が入っていません」という警告が表示されますか?

をしかし、私は私のプログラムの唯一のCBCentralManagerオブジェクトにstateを呼び出すとき、それはCBCentralManagerStatePoweredOnである、5を返します。電源が入っていますが、このエラーが発生します。 iPhoneのBluetoothも有効になっています。

ちょうど一般的に、いつこれが起こったでしょうか?矛盾するメッセージのように見えるので、プログラムが実行されているときに何が起こっているのか分かりません。

答えて

22

アプリの起動時にcentralManagerがcentralManagerDidUpdateState:からコールバックを取得するまで、最初は待機する必要があります。その後はいつも、centralManagerの呼び出しを行う前に状態をチェックすることをお勧めします。あなたは、中央が更新する機会を得る前に、スキャンまたは検索を呼び出す可能性が最も高いです。メソッドがオンであることを知った後でしかメソッドを呼び出さないようにしてください。最初に状態をチェックするif文で各呼び出しをラップすると、エラーは発生しません。

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

そうでない場合は、単に各呼び出しの前に状態チェックの内側にあなたの中心をラップ:問題だった

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

うん、。ありがとう。 – sudo

+0

これは私の問題を解決してくれてありがとうございます。何らかの理由で、Xcode 5 GMシミュレータにアップグレードしたときに、これが私に起こり始めました。 – Dan

+1

私はAppleがXcode 5でBLEシミュレータのサポートをサポートしていないと確信しています –