近くにあるすべてのiBeacons
を検索することはできますか? UUIDでiBeacons
を検索できることは知っています。しかし、私はすべてのiBeacons
を近くで見つけたいです。
IBeaconはリージョンであり、定義プロパティとしてUUIDを持っています。したがって、検索できるのはUUIDに一致するもののみです。特定のUUIDを持つ1つ以上を見つけた後、デリゲートコールバックを使用して最も近いものを見つけることができます。ビーコンは距離順に配列された配列に格納されます。
これに関するすばらしいサンプルコードと、かなり詳細なWWDCビデオセッションがあります。「コアロケーションの新機能」
iBeaconは、通常のBLEペリフェラルよりも高レベルの構造です。 Apple docsから判断できるものから、ビーコンはサービスUUIDに関連付けられています。つまり、ビーコンのファミリーは「リージョン」であり、ユーザーは以下に基づいてリージョンに出入りしますビーコンの範囲と可視性は、YOUではなく、その逆です。残念ながら、Appleはリージョンという用語を使用していますが、これはおそらくほとんどの人がMapKitに関連しているため、一般的な混乱を招いています。
ここに悪いニュースがあります:あなたが知っているProximityUUIDだけをスキャンすることができます。「ワイルドカード」プロキシミティUUIDはありません。さらに、CLBeaconsは低レベルのCoreBluetoothガットの邪魔をあまりしません。そのため、近くにあるすべてのビーコンを見つけたい場合は、CoreBluetoothを使用して周辺機器をスキャンし、返された周辺機器を確認する必要があります。ビーコンを見つけるためにそれぞれにクエリします。もちろんAppleは(Bluetooth SIGに)登録されていないか、(まだ)公開されていないので、他のBLEデバイスからiBeaconを構成するものをリバースエンジニアリングするにはBTスニファが必要です。 。
残念ながら、現時点では、最初にプロキシミティUUID値を知らないと、任意のiBeaconを検索できません。私はCOREBluetoothに直接書き込んでみましたが、お住まいの地域の送信ビーコンを発見して接続することはできますが、返されるのはBLE UUIDとは関係なく、気まぐれです。したがって、接続した周辺機器が実際にiBeaconであることを確認することもできません。
これはBLE仕様の制限ではなく、Appleによって課された制限です。 Androidプラットフォームの場合、この制限は存在しないようです。
このギャップがなくなるまで、Android=は、この領域でiOSよりもはるかに有利です。
UUIDのスキャンは役に立たないという以前のコメントには同意しません。逆に、ビーコンのUUIDを知っている場合は、クラウド内にビーコン/場所/サブジェクトのマップを作成し、それを使用してWebサービスを使用してナビゲートできます(ビーコンが修正されていると想定)。データをクラウドソーシングして、位置情報アプリを作成したいすべての人がビーコンUUID /位置のペアの非常に豊富なデータベースを最終的に利用できるようにすることができます。おそらくこれがApple=が情報を隠している理由です;彼らは彼ら自身の目的のためにこれを控えているかもしれません。
各APPは独自の特定のUUIDを使用し、「メジャー」および「マイナー」整数値を使用してビーコンを区別します。
たとえば、UUIDは一連のショップに関連付けられ、majorはショップを識別し、minorは通路、または製品のグループにさえ関連付けられます。
不明なUUIDのスキャンは、アプリが情報をどう処理するかわからないため、あまり役に立ちません。
端末で「uuidgen」コマンドを使用して、UUIDを一度に生成します。
悲しいことに、実際にビーコンと通信するプロトコルはないため、ビーコンの場所やその他の有用な情報を取得するための標準はありません。
同じWIFIネットワークに接続していなくても、ビーコン(通常は最も近いビーコン)への接続を開き、そこから追加のデータを取得できれば、はるかに優れていたでしょう。
bonjourを使用してWIFI経由でデバイスと通信するか、メジャーおよびマイナーIDを使用して何らかのWebサービスからデータを取得する必要があります。
Radius Networks(- AltBeacon 仕様の作成者および Android-beacon-libraryCoreBluetoothを使用してビーコンを識別することは不可能 によると==