アプリがバックグラウンドにある場合でも、BluetoothデバイスがiOSに接続または切断されたときに通知を受け取ることはできますか? Androidでは、ACTION_ACL_CONNECTED
イベントとACTION_ACL_DISCONNECTED
イベントを使用します。しかし、iOSに相当するものが見つかりません。
Bluetoothイベントの監視に使用できるCBCentralManager
を見つけましたが、Bluetoothデバイスが接続/切断されているときに関数が呼び出されず、Bluetoothを有効/無効にした場合にのみ呼び出されます。それは私の側のエラーですか、それとも正常ですか?
また、オーディオルートの変更に関するドキュメントも見つけました。これは、Bluetoothの接続/切断を検出するためのアイデアにもなります。新しいルートの種類を確認し、その時点で接続されているBluetoothデバイスを検出するだけです。
ドキュメントでは、NSNotification
のようなIOBluetoothHostControllerXXX
タイプも見つかりましたが、それらについては何も説明されていません。誰かがすでにそれらを使用しましたか?
より良いものがありますか、それとも私は何かが欠けていますか?
Bluetooth周辺機器の接続と切断に関する通知を受信することはできません一般的に。 アプリが接続するBLE周辺機器の接続および切断イベントを取得できます。
たとえば、アプリが心拍数センサーへの接続を開始した場合、接続が成功すると、CBCentralManagerDelegate
接続関数が呼び出されます。その後、そのデバイスの電源がオフになるか、範囲外になると、切断デリゲートメソッドが呼び出されます。
他のアプリが接続を開始して確立した場合、コールバックは取得されません。
前述のように、オーディオルートの変更を監視して、Bluetoothオーディオデバイスが接続/切断されたと推測できますが、これはヘッドフォンが接続されている場合にも発生します。