Beacon Bluetooth BLE - ntuf/Tips GitHub Wiki

Beacon Bluetooth BLE

ビーコン領域監視(CoreLocation)のレンジングは1秒間隔。それ以上速くできない。
実際これが結構遅い。 3mぐらいしか離れてないオブジェクト同士を移動する場合、
didEnterとか待ってられないし、1秒待ってたら「遅い!」ってな感覚がある

Core Bluetooth を使えばアドバタイズのインターバルまで速くできる。100msecとか。
Core Location によるビーコン領域監視のメリットはバックグラウンドでの挙動なので、
レンジングを高速に行いたい場合、フォアグラウンドでは Core Bluetooth を使うのがベストプラクティスなのでは?

ーーー
iOSの仕様上、バックグラウンドでも動作するエリアインまでの判定はUUIDの登録は20個まで。
その後のレンジングで取得できるmajor/minorの組み合わせで個体識別すればいい。

ーーー

iBeacon
・2013年のiOSに標準搭載された
・iPhone4S以降
・アドバタイジングパケットは100msでの間隔での送信を推奨
・AndroidではiBeaconをサポートしないが、Android4.3以降はBLEとしてiBeaconを認識することができる
・アドバタイジングパケットは30byte
|バイト位置|バイト数|領域名|値|説明
|0|1|Data length|02|データ長|
|1|1|Data type|01|データタイプ|
|2|1|LE and BR/EDR flag|06|固定値|
|3|1|Data length|1a|データ長|
|4|1|Data type|ff|固定値|
|5|1|Manufacturer data|4c|固定値|
|6|1|Manufacturer data|00|固定値|
|7|1|Manufacturer data|02|固定値|
|8|1|Manufacturer data|15|固定値|
|9-24|16|Proximity UUID| |Proximity UUID|
|25-26|2|Major| |Major|
|27-28|2|Minor| |Minor|
|29|1|Signal power| |信号強度|
-
Eddystone と iBeaconの機能比較
・Eddystone-URLを送出できる。
 ・iBeaconではできない。
 ・18バイトでURLを表現する必要があるため、短縮URLを利用することもある。
 ・Eddystone-URLの課題
  ・URLが固定なので利用者ごとにコンテンツを切り替えるためにはログイン処理が必要
  ・漏洩
  ・スパム 悪意のあるURLの送信
-
CoreLocationとCoreBluetooth
・CoreBluetoothフレームワークも用意されていてこちらを使用することも可能。
・距離を計算する機能などは含まれていない
・iOSデバイスからiBeacon信号を発信する時はこちらを使用する。
・アプリからBeaconデバイスに接続して、読み込みや書き込みもこちらを使用する

⚠️ **GitHub.com Fallback** ⚠️