BLEのフィルタリングについて
現状BLEのアドバタイズを取得したいのですが、フィルタリング条件をbinaryの時にはibeaconの情報を取得できるのですが、localnameにしたときには取得できません。
なにか方法はありませんか?
-
BLEにはアドバタイズメントとスキャンレスポンスの2種類があります。
iBeaconとのことですので、おそらく、アドバタイズメントにはiBeacon情報が入っており、スキャンレスポンスの方にlocalNameが入っているデバイスを利用されているのではないかと推測しています。
filterOnDeviceの際のフィルタ条件はそれぞれで判定を行いますので、localNameで指定した際にはiBeaconが入っているアドバタイズメントデータが取れない、ということが起きていると思われます。
上記を解消するためには、アドバタイズメントおよびスキャンレスポンスの両方が該当するようなフィルタ条件を設定いただければと思います。
0 -
ありがとうございます。
原因についてはおっしゃる通りだと思いますが、アドバタイズメントがデバイスにより異なるためアドバタイズフィルターが行えないのです…
現状はフィルターをかけずにスキャンしたデータにあとで検索をかけて絞りこみをかけていますが、非常に無駄なのでなにか回避方法があればと質問させていただきました。
0 -
少し対象が幅広くなりますが、下記の2つの組み合わせでの対応になるかと思います。
①アドバタイズメントデータは[iBeaconである]という情報でフィルタリングする(Apple社のベンダーコードを含めた[0xFF, 0x4C, 0x00] )
②スキャンレスポンスはlocalNameでフィルタリングする
フィルタ条件はORで複数記述ができますので、①②を記載することで両方取れるかと思われます。0 -
アドバイスありがとうございます。
その方法であれば現実的なフィルタリングができそうです。アドバイスありがとうございました。
0 -
Nice thanks
edu.jo 0
サインインしてコメントを残してください。
コメント
5件のコメント