1

複数の BLE アプリを構築していますが、BLE プロトコルと外部ベンダーでこの問題が発生しました。ほとんどの場合、BLE は意図したとおりに機能しますが、特定の周辺機器のサービスの検出に失敗し、電話を再起動またはリセットするまで再び機能しないことがあります。

他の誰かがこの問題を経験しましたか?

周辺機器の使用が完了すると、マネージャーがclosePeripheralConnectionメソッドを呼び出します。関連するコード:

// Disconnect from peripheral
- (void)closePeripheralConnection
{
    NSLog(@"== closePeripheralConnection ==");
    // If the peripheral is connected
    if (self.peripheral.state == CBPeripheralStateConnected && self.peripheral != nil) {
        // Cancel connection
        [self.manager cancelPeripheralConnection:self.peripheral];
    } else {
        [self clearPeripheralSettings];
    }
}

// Clear peripheral settings
- (void)clearPeripheralSettings
{
    // Clear peripheral variables
    self.peripheral = 0;
    // Clear services
    self.service = 0;
    // Clear characteristic values
    self.data = 0;
    self.notifyCharacteristic = 0;
}

- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
    [self clearPeripheralSettings];
}
4

2 に答える 2

2

コードとあなたのコメントに基づいて、あなたは何も悪いことをしていません。作業を妨げているのは、コア Bluetooth フレームワークの不安定性です。iOS 6 では、このような問題は iOS 7 よりも一般的でしたが、深刻なストレスが原因で事態が悪化する可能性があります。Apple Developer Forum と bluetooth-dev メーリング リストには、同様のレポートがたくさんあります。テスト中に行う使用方法が日常的な使用方法とは異なる場合、その問題はエンド ユーザーにとってそれほど重要ではない可能性があります。(確かにまだ迷惑ですが。)

統計を収集することをお勧めします。各 API を呼び出した回数を登録し、Apple がフレームワークがまだ不安定であることを示す証拠を確立するようにしてください。統計を NSUserDefaults に保存するのが最も簡単な解決策かもしれません。

とにかく、誤動作の証拠として役立つ強力なデータがある場合は、Apple にバグを報告し、開発者フォーラムに投稿し、bluetooth-dev リストにメールを送ってください。できるだけ多くの人にあなたの音を届けてください。

于 2013-10-30T13:11:49.077 に答える