web-dev-qa-db-ja.com

ペアリングされたBluetoothデバイスのリストをすばやく取得するにはどうすればよいですか?

下の図に示すように、iOS設定の「Bluetooth」セクションのリストと同じペアリングされたBluetoothデバイス(iOSデバイス)のリストを取得する必要があります。

enter image description here

出来ますか?
このタイプの機能を実行しているアプリを見たことがありますか?

私は次のことを試しました: link1link2link3link4link5link6

しかし、正確なリストを明確に取得するのに役立つものは何もありませんでした。これを達成する方法があるべきだと思います。あなたの経験を共有することによって私を助けてください。ありがとうございました。

10
Ashok

ペアリングされた周辺機器のリストをiOSから取得することはできません。また、特定の周辺機器がペアリングされているかどうかを確認することもできません。

ペアになっている周辺機器を取得する

考慮する必要がある2つのケースがあります。

  1. 周辺機器はすでにシステムに接続されている可能性があります(iOSは、たとえばバッテリーレベルを表示するために、一部の周辺機器に自動的に接続します)。この場合、周辺機器はブロードキャストされず、scanForPeripheralsを使用した検出は機能しません。

  2. 周辺機器はペアになっていますが、切断されています。この場合、retrieveConnectedPeripherals(withServices:)は機能しません。

したがって、周辺機器を取得するには、両方を組み合わせる必要があります。まず、retrieveConnectedPeripherals(withServices:)から返された周辺機器にあるかどうかを確認する必要があります。そうでない場合は、scanForPeripheralsする必要があります。

範囲外の周辺機器を取得したい場合は、retrievePeripherals(withIdentifiers:)を使用してみてください。ただし、ペアリングされていないデバイスも返される可能性があり、後で保存する必要がある周辺機器のUUIDに依存します。ペアリング。

周辺機器がペアリングされているかどうかの検出

特定のペリフェラルがペアになっているかどうかを検出する方法は1つあります。保護された特性(暗号化-ボンディングが必要)から読み取ろうとする必要があります。期待されるデータを受け取った場合、それはユーザーがペアリング要求を受け入れたことを意味します。それ以外の場合は、空の応答を受け取るか、何も受け取りません。

参考文献

あなたは私の記事でBluetoothについてもっと読むことができます:

10
Wojciech Kulik

ペアリング/接続されたデバイスのリストを取得することは可能ですアドバタイズメントUUIDがある場合のみ

dispatch_queue_t centralQueu = dispatch_queue_create("A_NAME", NULL);
_centralManager = [[CBCentralManager alloc]
                               initWithDelegate:self
                               queue:centralQueu
                               options: @{CBCentralManagerOptionRestoreIdentifierKey:@"RESTORE_KEY",
                                          CBCentralManagerOptionShowPowerAlertKey: @YES}];
_ServiceUUIDs = @[[CBUUID UUIDWithString:@"THE_UUID"]]  //the array of CBUUIDs which you are looking for
[_centralManager retrieveConnectedPeripheralsWithServices:_ServiceUUIDs]

LightBluenRFConnect などのiOSアプリケーションを使用してBLEデバイスのアドバタイズUUIDを取得できます

0
Hassan Shahbazi