8

iOS6 の一体何が起こっているのか、Bluetooth LE の切断をどのように処理するのか? デバイスがすぐに切断される前に、何らかの奇妙な理由で、デバイスが約 30 ~ 60 秒間切断を待機します。ASAFP を切断するために必要です。

周辺機器からの即時切断を開始する方法を見つけようとして、インターネット全体を焼き尽くしていましたが、回避策を説明するこの気の利いたメールを見つけました。これは、サービス特性に関する通知の購読を解除することです.

今、私はそれをやっていると思います..切断したいときは電話します[connected_device setNotifyValue:NO forCharacteristic:connected_characteristic]

次に、didUpdateNotificationStateForCharacteristic 関数で、私は...

if((int)characteristic.isNotifying == 0){
   [manager cancelPeripheralConnection:peripheral];
}

関数 didDisconnectPeripheral で...

connected_peripheral = nil;
connected_characteristic = nil;
[connected_peripheral release];
[connected_characteristic release];

また、Apple のCoreBluetooth 温度センサーの例もよく調べましたが、あまり役に立ちませんでした....

これに関するどんな助けも素晴らしいでしょう!! 何が欠けているのかわかりません.....

更新: 切断を許可する前に、少なくとも 1 分間はアプリを Bluetooth デバイスに接続する必要があるようです。アプリが 1 分以上接続されている場合、コマンドが送信されるとすぐに切断されます。それ以外の場合は、実際に切断されるまで 1 分のマークまで待機します。

更新: 1 分前に切断しようとすると、デバイスが実際に切断されたときに次の出力がログに記録されます。

Oct 24 16:49:35 Christophers-iPhone awdd[8168] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Oct 24 16:49:35 Christophers-iPhone awdd[8168] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
4

2 に答える 2

7

Apple によると、この新機能は「仕様による」ものです。この問題を解決する方法は、ペリフェラルにコマンドを送信し、その端から切断することでした。これを行うと、すぐに切断されます。Apple がこの動作を iOS5 から iOS6 に変更した理由はわかりませんが、理由があったに違いありません。もちろん、このソリューションは、周辺機器のファームウェアにアクセスして変更できる場合にのみ機能します。別の解決策がある場合、それはまだ見つかっていません。

于 2012-10-25T15:27:26.777 に答える
0

これは iOS 6.0 のバグで、6.1 では修正されています。

于 2013-02-20T16:30:19.813 に答える