2016-10-26 5 views
0

私はBTデバイスをiPhoneアプリに接続する必要があるBLEアプリを開発しています。BLEデバイスをユーザーに表示する前にフィルタリングする方法は?

私はすべてのデバイスをスキャンすることができ、ユーザーも接続できます。しかし、スキャン後にデバイスをフィルタリングする方法(そして接続の前に表示する方法)、BTデバイスの数は(ちょうどの場合)多くあり、ユーザーは他のBTデバイスと接続することができますが、アプリケーションの完全性を維持するために使用するのではなく、私が望むデバイスだけを表示したいのです。私は、UUIDを渡すことでデバイスをフィルターにかけることができますが、待っていると、これらのデバイスは世界中のどのデバイスでもかまいませんので、修正できません。

提案がありますか?

+0

通常、興味のあるサービスを宣伝しているデバイスのみをスキャンし、そのデバイスのみを表示します。 – Paulw11

答えて

0

範囲を取得するには、"近接"のBLEデバイスを使用できます。 BLEデバイスにも同じシナリオを使用しました。 BLEデバイスの近接を取得して、最も近いデバイスをユーザーに知らせることができます。

携帯端末を携帯端末に近づけることで(携帯端末向けのアプリを想定している)最も近いBLEデバイスに接続して設定することができます。それが役に立てば幸い。

+0

これは問題ありませんが、どのデバイスが接続する必要があるかをどのように知ることができますか? 3つの異なる種類のBTデバイスを携帯電話の近くに置くと、すべてのデバイスが表示されますが、必要なデバイスのみを表示したいだけです。 – Hemang

+0

@Hemang固有の文字列または数字を 'advertisingData'に入れることができます。これは、サービスでスキャンした後、オプションでユニークなサービスUUIDを作成することもできます。 – ColdSteel

+0

一般的に、最も近いデバイスをアプリケーションのリストのトップに表示できます。このようにアプリケーションでこのように言及することができます:** _ "設定するためにBLEデバイスを電話に近づけてください" _ **または、BLEデバイスを知っていれば、 TOPにBLE ID:1のようにステッカーを貼り、アプリケーションでは近接性に基づいて構成したいデバイスを表示することができます。そのため、ユーザーはどのデバイスを設定するかを知ることができます。 –

0

MACアドレス(これはScanResponseのパラメータ "BluetoothDevice"の一部です)に対してデバイスをフィルタリングできます。これは、MACアドレスにOrganizationally Unique Identifier(OUI)が含まれている場合に便利です。詳細はhttp://standards.ieee.org/develop/regauth/tut/eui.pdfをご覧ください。

通常、最初の3バイトにはOUIが含まれているため、組織に属するすべてのデバイスを簡単に除外できます。したがって、すべてのBTデバイスの最初の3バイトが常に固定されていれば、それは好ましいことです。この場合、これらのバイトをフィルタリングして、デバイスのみを表示することができます。

編集:それは直接ScanResponseDataを経由してMACアドレスを取得することはできません iOSの上ので、あなたがそこにMACアドレスを含むスキャン応答、メーカーの特定の部分を変更することができます。

+1

iOSでは、デバイスのMACアドレスにアクセスできません。それはUUIDだけで、あなたがそれとペアを組んでいないと変わるかもしれません。 – Larme

+0

ああ、そうです、申し訳ありません。私はそれがiOSだと見落としました。しかし、フィルタリングするデバイス名を取得しないでください?また、MACアドレスをスキャン応答データに明示的に含めることもできます。 – Nebr

+0

名前は取得できますが、重複している可能性があります。それらを区別するためには、UUIDのみを使用する必要があります。 – Larme

関連する問題