2012-10-24 22 views
9

iPhone用のCoreBluetoothマネージャーアプリケーションで作業しています。以前に発見されたCBPeripheralに再接続できるように、(CoreDataの)ペリフェラルのUUIDを保存してから、CBCentralManagerのretrievePeripherals:を呼び出します。私のdidRetrievePeripherals:コールバックが呼び出され、私は接続することができます。CoreBluetoothでの再接続時のサービスと特性の検出を避ける

私が既に知っている周辺機器に再接続しているので、私はそのサービスと特性を発見することを避けたいと思います。だから私は最初に接続するときに、サービスと特性のUUIDを(周辺機器のUUIDと一緒にCoreDataに)保存します。

CBPeripheralのreadValueForCharacteristic:またはwriteValueForCharacteristic:がCBCharacteristicをパラメータとし、CBCharacteristicインスタンスを構築するAPIがないため、これらのUUIDを使用して特性を読み書きすることはできません。

これまでに知られていた周辺機器に再接続している間にサービスや特性を検出する方法はありますか?

+0

こんにちは、CoreDataに既知のデバイスのUUIDを保存すると、実装するサービスと特性を含む各デバイスのデータ構造を保存できませんでしたか? –

+1

デバイスのサービスと特性は、保存するUUIDによって識別されます。しかし、CoreDataにCBServiceとCBCharacteristicのインスタンスを保存することはできません。なぜなら、それらはNSManagedObjectから派生したものではないからです。少なくとも、私はどのようにできるのか分かりません。または私はあなたの質問を誤解しましたか? – mezulu

+0

あなたの質問を理解しています。 discoverCharacteristics:forService:UUIDsを使用して... –

答えて

3

Mezuluでは、暗号化された/ペアになったリンクを使用したいと思います。そうすれば、iOSがキャッシュを行います。私の答えhereを参照してください。

+0

この応答に感謝します。私は、iOS 6がサービスと特性のキャッシングを導入したことに気づいていませんでした。これは私が探していたものです。 – mezulu

関連する問題