2

私はコアBluetoothフレームワークで作業しています。切断されたペリフェラルを検出するdidDisconnectPeripheralメソッドを実装しました。現在、周辺機器が切断されてから約 20 秒後に呼び出し中です。そのタイムアウト期間を短縮したい。ドキュメント内で多くの検索を行いましたが、答えを得ることができませんでした。それは本当に可能ですか?

4

2 に答える 2

0

デリゲートがバックグラウンド スレッドで動作している可能性があり、これが遅延の原因である可能性があります。

初期化をチェックして、別のスレッドで行われているかどうかを確認してください。キューの値が nil 以外の場合は、その可能性があります。

self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

また、didDisconnectPeripheralメソッド内にこれを配置して、スレッドが呼び出されたときにスレッドが変更されたかどうかを判断できます。

NSLog(@"Current thread: %@",[NSThread currentThread]);

スレッドが変更された場合は、初期化を変更して、それが確実にメインになるようにすることができます。

于 2015-04-09T19:38:30.577 に答える
0

私はその方法を使用してきましたが、切断するとすぐに(ほぼ)呼び出されるため、その遅延期間を短縮することは間違いなく可能です。didFailToConnectToPeripheralそれをメソッドと混同していませんか?通常、didFail メソッドは呼び出されるまでに長い時間がかかります。これは、Bluetooth LE にはタイムアウト期間がなく、長時間接続を試みることを読んだ記憶があるためです。

于 2013-06-13T22:55:04.807 に答える