CoreBluetooth フレームワークを使用して、周辺機器として機能する iOS アプリと中央として機能する OS X アプリがあります。OS X アプリは iOS アプリに接続し、暗号化された特性を読み取ってランダムなコードを入力することで結合します。iOS アプリを再起動するまでは、すべて正常に動作します。それ以降、iOS デバイスに接続してその特性を読み取ろうとするたびに、「ハンドルが無効です」というエラーが返されます。これを修正する唯一の方法は、OS X の Bluetooth 設定からデバイスを削除し、結合プロセスを再開することです。
この問題は、デバイスのサービスと特性の OS X によるキャッシュが原因であると思われます。2 つの iOS デバイスを使用して 1 つを再起動した後に相互に接続している場合、問題は発生しません。
私が探しているのは、サービスと特性の OS X のキャッシュをクリアする方法です。com.apple.Bluetooth.plist を削除して blued プロセスを再起動/Bluetooth をオン/オフする方法に精通しています。( Bluedは ATT 値をキャッシュしますか? また、キャッシュをクリアする方法は?およびMacOS で CoreBluetooth キャッシュをクリアするにはどうすればよいですか? )
ただし、com.apple.Bluetooth.plist を削除するには、iOS デバイスに再度接続してコードを入力する必要があります。キャッシュをクリアする方法はありますが、アプリに関連するサービス/特性でのみそうしますか?