14

iPhone 5 で CoreBluetooth を使用するアプリを実行すると、次のエラーが発生し続けます。<CBConcreteCentralManager: 0x2007d590> is not powered on

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

一般的に、これはいつ起こりますか?競合するメッセージのように見えるものを受け取っているため、プログラムの実行時に何が起こっているのかさえわかりません。

4

1 に答える 1

22

centralManagerDidUpdateState:アプリの起動時にcentralManager がコールバックを取得するまで、最初は待機する必要があります。次に、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
}
于 2013-06-15T00:03:27.563 に答える