1

私が現在取り組んでいるプロジェクトでは、シングルトン クラスを使用してすべての Bluetooth 関連タスクを処理しています。複数の周辺機器とのCBCentralManager接続を処理するオブジェクトです。が検出されたらCBPeripherals、ユーザーが周辺機器を選択して接続できるようにします。接続が確立されると、利用可能な別のデバイスを選択できるため、接続は順次行われます。

しかし、接続の取得に関しては、取得した周辺機器の配列を取得します。複数の周辺機器を取得するためのベスト プラクティスは何ですか? ペリフェラルへの接続要求を一度に複数作成してもいいですか、それとも順番に行うべきですか?

現在、取得した周辺機器をループして、待機せずに接続しようとしています。動作しますが、接続しているbleハードウェアに問題がある可能性がありますが、少し時間がかかります.

さらに、メソッドを起動すると、デリゲート コールバックが返されないため、メソッドでretrievePeripheralsWithIdentifiers:取得を行っています。centralManager:didDisconnectPeripheral:error:

NSArray *retrieved = [self.centralMgr retrievePeripheralsWithIdentifiers:identifiers];

次に、取得したオブジェクトをループします。

それは動作しますが、それは正しい方法ですか?

4

1 に答える 1

5

iOS 7 では、Core Bluetooth API が更新されました。retrievePeripheralsWithIdentifiers:要求した周辺機器を直接返し、コールバックはもうありません。

経験則では、CBPeripheral オブジェクトがある場合は、それを再利用できます。再度取得する必要はありません。あなたの質問は、API の現在の使用方法に関して少し混乱していますが、疑問がある場合はいつでもCore Bluetooth Programming Guideを参照できます。

例外は 1 つだけです。Core Bluetooth フレームワークが再起動するか、電源を入れ直した場合、CBPeripheral オブジェクトは無効になります。再利用するとエラーが発生します。この場合、新しいインスタンスを取得する必要があります。

于 2014-04-09T11:38:16.077 に答える