下の図に示すように、iOS設定の「Bluetooth」セクションのリストと同じペアリングされたBluetoothデバイス(iOSデバイス)のリストを取得する必要があります。
出来ますか?
このタイプの機能を実行しているアプリを見たことがありますか?
私は次のことを試しました: link1 、 link2 、 link3 、 link4 、 link5 、 link6
しかし、正確なリストを明確に取得するのに役立つものは何もありませんでした。これを達成する方法があるべきだと思います。あなたの経験を共有することによって私を助けてください。ありがとうございました。
ペアリングされた周辺機器のリストをiOSから取得することはできません。また、特定の周辺機器がペアリングされているかどうかを確認することもできません。
考慮する必要がある2つのケースがあります。
周辺機器はすでにシステムに接続されている可能性があります(iOSは、たとえばバッテリーレベルを表示するために、一部の周辺機器に自動的に接続します)。この場合、周辺機器はブロードキャストされず、scanForPeripherals
を使用した検出は機能しません。
周辺機器はペアになっていますが、切断されています。この場合、retrieveConnectedPeripherals(withServices:)
は機能しません。
したがって、周辺機器を取得するには、両方を組み合わせる必要があります。まず、retrieveConnectedPeripherals(withServices:)
から返された周辺機器にあるかどうかを確認する必要があります。そうでない場合は、scanForPeripherals
する必要があります。
範囲外の周辺機器を取得したい場合は、retrievePeripherals(withIdentifiers:)
を使用してみてください。ただし、ペアリングされていないデバイスも返される可能性があり、後で保存する必要がある周辺機器のUUID
に依存します。ペアリング。
特定のペリフェラルがペアになっているかどうかを検出する方法は1つあります。保護された特性(暗号化-ボンディングが必要)から読み取ろうとする必要があります。期待されるデータを受け取った場合、それはユーザーがペアリング要求を受け入れたことを意味します。それ以外の場合は、空の応答を受け取るか、何も受け取りません。
あなたは私の記事でBluetoothについてもっと読むことができます:
ペアリング/接続されたデバイスのリストを取得することは可能ですアドバタイズメント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]
LightBlue や nRFConnect などのiOSアプリケーションを使用してBLEデバイスのアドバタイズUUIDを取得できます