Core Bluetooth で、デバイスに接続した後、デバイスの電源をオフにすると、デバイスが切断されます。しかし、デバイスの電源を再度オンにすると、didDiscoverPeripheral
再度呼び出されることはありません。デバイスに再接続するにはどうすればよいですか?
4 に答える
デバイスを切断するとcancelPeripheralConnection
、didDisconnectPeripheral
デリゲート メソッドが呼び出されます。ただし、iOS 6.0 から、デバイスは約 40 ~ 50 秒 (またはそれ以上) 接続されたままになるため、その間 nodidDiscoverPeripheral
は呼び出されません。もう一度「発見」したい場合は、retrieveConnectedPeripherals
メソッドを呼び出すだけで、 で参照を取得できますdidRetrieveConnectedPeripherals
。
ただし、最善の解決策は、デバイスの UUID を保存し、それを使用してretrievePeripherals
メソッドに再接続することです。これで呼び出さdidRetrievePeripherals
れ、 と再接続できますconnectPeripheral
。これはデバイスに再接続する最速の方法であり、この場合スキャンは必要ありません。
でスキャンを実行するとscanForPeripheralsWithServices
、通常、特定のデバイス アドレスについて 1 回だけ通知されます。オプションを指定することで、これを変更して重複を報告することができますCBCentralManagerScanOptionAllowDuplicatesKey
。または、タイムアウトを使用して他のデバイスが切断されたことをアプリで検出し、スキャンを再開することもできます。
CoreBluetooth では、すべての管理はアプリケーション層によって行われます。あなたの場合、同じイベントよりも切断イベントをリッスンし、周辺機器を再接続します。接続方法は安価なものであり、デバイスが範囲内に戻ったときにデバイスに再接続することを保証します.
デバイスを明示的に切断すると、同じ切断イベントを受け取りますが、再接続メソッドを呼び出す必要がないことに注意してください。