4

応答する正しい方法は何peripheralManager:didReceiveWriteRequests:ですか?

ヘッダーのドキュメントには次のように記載されています。

「このメソッドrespondToRequestWithResultを呼び出すたびに、1回だけ呼び出す必要があります。」

didReceiveWriteRequests複数の書き込み要求では、を使用して渡されますNSArray

すべての書き込み要求が正常に処理された場合respondToRequestWithResultrespondToRequestWithResultメソッドは単一のCBATTRequest引数のみを取り、CBATTRequest付属のsのリストは受け取らないため、リストから要求を任意に選択し、それを引数として使用しdidReceiveWriteRequestsますか?

リクエストのリストを引数として取る対称応答メソッドを期待していました。

4

1 に答える 1

5

Apple のドキュメントから:こちら

接続されたセントラルからの書き込み要求の処理も簡単です。接続されたセントラルが 1 つ以上の特性の値を書き込む要求を送信すると、ペリフェラル マネージャーはデリゲート オブジェクトのperipheralManager:didReceiveWriteRequests: メソッドを呼び出します。今回は、デリゲート メソッドが、それぞれが書き込み要求を表す 1 つ以上の CBATTRequest オブジェクトを含む配列の形式で要求を配信します。書き込み要求が満たされることを確認したら、次のように特性の値を書き込むことができます。

myCharacteristic.value = request.value;

上記の例ではこれを示していませんが、特性の値を書き込むときは、リクエストのオフセット プロパティを考慮してください。

読み取り要求に応答するのと同じように、peripheralManager:didReceiveWriteRequests: デリゲート メソッドが呼び出されるたびに、respondToRequest:withResult: メソッドを 1 回だけ呼び出します。つまり、respondToRequest:withResult: メソッドの最初のパラメーターは、peripheralManager:didReceiveWriteRequests: デリゲート メソッドから複数のオブジェクトを含む配列を受け取ったとしても、単一の CBATTRequest オブジェクトを想定しています。次のように、配列の最初のリクエストを渡す必要があります。

[myPeripheralManager respondToRequest:[requests objectAtIndex:0]

    withResult:CBATTErrorSuccess];
于 2013-10-09T18:14:12.507 に答える