-iBeaconがiOS7の最も重要な機能である理由。
-iBeaconは、ロケーションベースのアプリケーションの新しい時代を開きます。
-iBeaconがNFCを殺す方法。
-iBeaconとモバイル決済の未来。
記者によると、これはモバイル決済、屋内ナビゲーション、顧客習慣の市場を変え、同時にNFCを殺すスーパーテクノロジーです。
猫の下で、iBeaconが実際に何であるか、どのように使用できるか、オフィスをナビゲートするためのサンプルアプリケーションを紹介します。

iBeaconは、メジャーとマイナーの3つの近接パラメーターUUIDを送信するBluetooth Low Energyビーコンです。 iOS7を使用すると、このようなデバイスを簡単に操作できます。
近接UUIDは一意の128ビット識別子であり、会社または建物内のすべてのビーコンは同じpUUIDを持ちます。 majorとminorは、同じpUUID内のビーコンに番号を付けるための16ビットの符号なし整数です。 これらはAppleの推奨事項です。これらのパラメーターには絶対に任意の値を設定できますが、推奨されるスキームの方が便利です。
EstimoteおよびKontaktからのビーコンの予約注文。


1つのビーコンは30ドルで、バッテリーで2年間働きます。 多くの企業は、iBeaconプロファイルをサポートするために製品を完成させています。 3ヶ月以内に10ドルの中国のカウンターパートが現れると思います。
iOSデバイスはビーコンとして機能することができます。これにより、新しいAPIを今すぐ試すことができます。
Core Location Frameworkには、CLBeacon、CLBeaconRegion、およびCLCircularRegionの3つのクラスが追加されました。 CLLocationManagerは、isRangingAvailable、rangedRegions、requestStateForRegion、startMonitoringForRegion、startRangingBeaconsInRegion、およびCLLocationManagerDelegateの対応するイベントを導入しました。 startMonitoringForRegionは、GPSリージョンだけでなくBluetoothもサポートするようになりました。 使用方法については、ドキュメントで詳しく説明しています 。
実際、新しいAPIには次の2つの可能性があります。
- startRangingBeaconsInRegionメソッドを使用して、特定のプロキシミティUUIDを持つ可視性ゾーン内のビーコンのリストを取得します(値majorまたはmajor / minorを指定することで検索を絞り込むことができます)。 APIは、ビーコンまでの距離(イミディエート、ニア、ファー)および距離誤差をメートルで決定します。
- 地域の監視。 ユーザーがビーコンのカバレッジエリアに出入りすると、didEnterRegion / didEnterRegionイベント(startMonitoringForRegionメソッド)が発生します。 さらに、監視は、アプリケーションがバックグラウンドにあるときでも機能し、イベントが発生すると、アプリケーションは起動されます。
データを使用して部屋のデバイス座標を取得することはできません 。 距離の精度に関する説明には、「ビーコンの正確な位置を特定するために距離を使用しないでください」と明示されています。 実験では、データが三角測量に適していないことを確認しています。
iBeaconsの可能なアプリケーション:
- 屋内ナビゲーション:各部屋にビーコンを掛けます(同じ近接UUID、フロア/部門の異なるメジャー、部屋の異なるマイナー)。 マップには、スマートフォンに最も近いビーコンが表示されます。
- 博物館のインタラクティブツアー:展示ごとに灯台を接着し、展示に近づくと追加情報を表示します。
- 市内の正確な位置。 建築物のモニュメントやオブジェクトにビーコンを掛けます。 街全体が博物館に変わります。
- 視覚障害者のためのナビゲーション。 ビーコンが検出されたら、ユーザーのいる場所と移動できる場所で音声メッセージを再生します。
- ロケーションゲームとクエスト。 たとえば、簡単なサルの検索デモ
- 店舗での割引とプロモーション。 ジーンズを渡し(ビーコンが棚に設置されています)、buy-two-pair-third-in-giftについてのメッセージを受け取ります。
- 機器のチンキ。 これが通常iBeaconに接続されているかどうかはわかりませんが、iOS7では、iPhoneに触れることでApple TVをセットアップできます。
iPhone 4s +、iPad 3+はビーコンのように機能します。 iOSデバイスのテストを使用して、オフィスの周りに簡単なナビゲーションを作成することにしました。 Xamarin.iOSをお持ちでない場合、またはアプリケーションをビルドしたい場合は、 Estimoteアプリをお試しください。 アプリケーションは新機能を示します(Bluetooth LEを搭載した2つのiOSデバイスが必要です)。
だから。 オフィスの地図:

ナビゲーションには、iOS7のビーコンが必要です。テストデバイスを入力し、キャビネット310、311、および312の中央に配置しました。合計で、3つのビーコンと1つの受信機が必要でした。


Xamarin AirLocateデモアプリケーションを基礎としてみましょう。 近接UUID、メジャーおよびマイナー(パラメーターは構成可能)のブロードキャストを有効にし、特定のpUUIDでアクセス可能なビーコンのリストを表示できます。
オフィスをナビゲートするためのアプリケーションコードはgithubで入手できます。 私はひどいコードについて謝罪したいだけです。私はマーケティング担当者であり、これが私の最初のiOSアプリケーションです。
ビーコンを同じ近接UUIDに設定し、majorをキャビネット番号に設定します。 ビーコンアクティベーションコード(バックグラウンドでは機能しません。自動ロックをオフにする必要があります):
CLBeaconRegion region = new CLBeaconRegion (uuid, major.UInt16Value, minor.UInt16Value, Defaults.Identifier); if (region != null) peripheralManager.StartAdvertising (region.GetPeripheralData (power));
AirLocateは、距離と精度を備えた利用可能なビーコンのリストを提供します。これは、312室の例です(310のビーコンは終了しません)。

キャビネットの上に長方形を描くMapViewControllerを作成します。その数は、最も近いビーコンのメジャーに含まれています。
locationManager = new CLLocationManager (); locationManager.DidRangeBeacons += HandleDidRangeBeacons; locationManager.StartRangingBeacons (new CLBeaconRegion(Defaults.SupportedProximityUuids[0], "office_beacon"));
void HandleDidRangeBeacons (object sender, CLRegionBeaconsRangedEventArgs e) { drawRegion (e.Beacons [0]); }
switch ((int)(beacon.Major)) { case 310: path.AddRect(roomCoords[0]); break; case 311: path.AddRect(roomCoords[1]); break; case 312: path.AddRect(roomCoords[2]); break; }
(ひどいコードについては再度ごめんなさい)。
これで、オフィスを歩き回ってテストできます。


うまくいく!
キャビネットを決定する精度は優れていますが、更新速度はあまりよくありません。通常の手順で別のオフィスに行くと、マップは10〜30秒で更新されます。
アプリケーションは改善する価値があります。 精度のしきい値を追加して、近隣のオフィスと灯台のない廊下で、マップがビーコン付きのキャビネットを描画しないようにします。 そして、長方形ではなく、正確な半径の円を描きます。 しかし、デモンストレーションの目的には十分です。
一般に、iBeaconに革命的なものはありませんが、Appleは間違いなく位置情報ベースのアプリケーションの開発に強い弾みをつけました。 iOS7の場合、それらは12行のコードで記述されています。
estimote.comのヘッダーの写真、メーカーのWebサイトの灯台の画像。
habr-blogを購読します。 毎週木曜日、モバイル開発、マーケティング、モバイルスタジオビジネスに関する役立つ記事。