アプリケーションでBluetoothデバイスを切断すると、iOSデバイスは約10秒間その接続を保持し続けることに気付きました。私はこれを回避しようとしましたが、BluetoothモジュールがiOSデバイスとの接続を取り消す特性に書きましたが、動作しませんでした(主にモジュールを変更したために、私はデバイスがどこかにキャッシュされていると仮定します)。コードで即座に切断する方法はありますか?現在、スウィフトコマンド manager.cancelPeripheralConnection(peripheral)
を使用しています。iOS BLEの切断時間
答えて
残念ながら、ありません。周辺機器を切断するようにシステムに指示する唯一の方法は、既に使用しているcancelPeripheralConnection
メソッドを使用することです。それでも、このメソッドを呼び出すと、必ずしも周辺機器が切断されるというわけではありません。 iOSの上
背景
全体BLE接続管理は、オペレーティングシステムによって維持されます。これは、単一のアプリケーションが接続を「所有」していないことを意味します。複数のアプリケーションが中央および周辺機器にアクセスできるように、すべてのBLE機能が多重化されています。
たとえば、心拍センサーからのデータをバックグラウンドで追跡するフィットネスアプリケーションをインストールした場合、アプリケーションの心拍センサーにも「接続」できますが、実際の切断を開始することはできませんフィットネスアプリが接続を維持している限り。
あなたが気づいた切断遅延は、基本的にオペレーティングシステムの最適化です。アプリケーションが周辺機器への接続を保持しなくなった場合、不要な接続/切断サイクルを回避するためにしばらく待ってから、Bluetoothチップの切断をトリガーします。
希望に役立ちます。
iOSでは、CBCentralManagerメソッドcancelPeripheralConnection(CBPeripheral)を呼び出すと、必ずしもただちに接続が終了するとは限りません。 Appleのドキュメントには、状態として:
Because other apps may still have a connection to the peripheral, canceling a local connection does not guarantee that the underlying physical link is immediately disconnected. From the app’s perspective, however, the peripheral is considered disconnected, and the central manager object calls the centralManager:didDisconnectPeripheral:error: method of its delegate object.
あなたは、すぐにプログラムで接続を終了する必要があり、他の中央装置から接続する周辺機器を解放するか、自分のセキュリティ層をリセットするために言うならば、あなたは従う必要があり次のStackOverflowスレッドで説明する手順:通常の方法で切断する周辺機器を伝える末梢(例えば「GAPRole_TerminateConnection」または「GAP_TerminateLinkReq」に独自の独自のコマンドを送信するためのアプリです
iOS 6 - Bluetooth LE disconnect
または"LL_Disconnect"または理由 "HCI_DISCONNECT_REMOTE_USER_TERM"を持つ "HCI_Disconnect [_ *]")。これはいつも動作し、ではないは、中央デバイス(すなわち、iOS)に通知する公式の切断であるため、接続監視タイムアウトによって遅延される。範囲外になるように切断が計画されていない場合、または「LL_EXT_DisconnectImmed」のようにリモートデバイスに通知することなく周辺機器が切断された場合、監視タイムアウト(iOSでは最大6秒、Androidではデフォルトで20秒)が有効になります"(いくつかのBLE周辺実装でのみ利用可能です)。
- 1. string.replaceAll切断文字時間の50%
- 2. アクティビティの切り替え中にBLEデバイスが切断される
- 3. BLE with iOS広告間隔
- 4. iOSのAsyncsocket切断イベント
- 5. Firebaseの切断時のタイムアウト
- 6. 切断時のFirebaseアップデート
- 7. 切断時の自動ログアウト
- 8. ソケット - サーバーの切断時にクライアントを切断する
- 9. Android BLEは切断後にバックグラウンドで接続します
- 10. Android BLE(Bluetooth Low Energy)接続/切断/再接続
- 11. iOSのFirebaseからの切断
- 12. リトルエンディアンバイトオーダー(iOS、BLEスキャンレスポンス)
- 13. BLEバックグラウンドスキャンiOS
- 14. Androidで約1時間後にモバイルデータが切断される
- 15. BLE異なるViewControllerにナビゲートすると周辺機器が切断される
- 16. ブルートゥースBLE途切れCodenameOne
- 17. Twilio TaskRouter:切断時のワーカーアクティビティの変更
- 18. Arduinoシリアル切断時の読み取り
- 19. レンジングビーコンの間のBLE接続
- 20. BLE iOSのバックグラウンド広告
- 21. iOS上のカスタムBLE広告
- 22. 時間を解析iOSのNSDateFormatterができ、適切
- 23. ftp image uploadによって画像が短時間で切断される
- 24. 切断時にオブジェクトを削除socket.io
- 25. デスクトップログオフ時にリンクサーバーが切断される
- 26. 空間一つが切断別
- 27. BTペアリングが失敗した後にBLEが切断されます
- 28. MySQLは接続の切断を判断するのに時間がかかります
- 29. iOS:文字列から12/24時間に切り替える
BLEモジュールを取り外すと、オペレーティングシステムが強制的に接続を切断しますか、それともそれを保持しますか? – Ubarjohade
理論的にうまくいくはずですが、いくつかの問題があります。まず、iOSは(接着/ペアリングを使用して)しばらくの間、自動的に再接続を試みます。第二に、接続パラメータ、接続監督タイムアウト、スレーブレイテンシを特に考慮する必要があります。彼らは、いつ接続が失われたとみなされるかを決定します。ペリフェラル側から切断すると、前述のパラメータに応じて中央に接続が表示されます。詳細については、次のリンクを参照してください:https://devzone.nordicsemi.com/question/60/what-is-connection-parameters/ –