ある知人からジオフェンスを使った街角紹介アプリを考えてくれませんか?

と言う問い合わせがあったので少し調べてみました。

ジオフェンスとはそもそもどういう仕組みなのか、GPSを使ってある距離の中に入ったら指令を飛ばすんじゃないの。その程度の基礎知識しか持ち合わせていません。

現在、スマフォから位置情報を取得出来るのははGPS、Wi-Fi、Bluetoothなので、このどれかを使う事になります。

GPSの利点は遠くの距離までジオフェンスをカバー出来る事。Wi-Fiは50m、見晴らしが良ければ100m行く機器もあります。bluetoothはというと、10m(100平方メートル)程度でしょうか。ただしこれは省電力モードが備わっている4.0であればバッテリー消費は抑えられます。アプリを上げたたままでも殆ど電力を減りません。

という事なので、まずは遠くをGPSを使ったジオフェンスを使って監視して、近くに来るとBluetoothを使った監視に切り替えるアプリにしようと思います。

流行り始めたiBeacon!!

iOS7.0、去年のWWDCで発表されていました。バックグラウンドで起動が出来ないのと、応答速度が遅いのであまり普及してなかったようです。しかし今春の7.12のアップデートでかなり性能が向上したようです。

とにかく簡単なものでテストしようと思いサンプルプログラムを探しました。

機能の発表は去年の話しなので比較的沢山のサンプルが公開されています。

まぁ、とにかく動かしてみます。

以下のサイト参照して実装開始します。

http://dev.classmethod.jp/references/ios7-ibeacon-api/

サンプルに複雑さはないのですが、IBに変わってStoryBoardになっていたので少々戸惑いました。

1年近くiPhoneアプリのリリースをしていなかったツケでしょうか、色々と新しい機能が出てバージョンアップされています。

WWDC2014ではSwiftなる新言語がまで発表されている始末、時の経つのは早い。私が覚えたObjective-Cはどうなってしまうのですか。この老兵にまた新言語を学べと、泣き言を言っていても始まりません。

実際、StoryBoardを使い始めて分かった事は、全ての画面レイアウトやアクションリンク等をGUIで繋げて一画面に書いて行くのでディスプレイが小さと見づらい。それからパラーメーターに慣れないと作業効率は上がらない。一人で小さいアプリをすぐに作るのは向いています。後から画面を増やしたりするのは面倒が増えそうです。

取りあえず上記のサンプリアプリを参考に実装してみました。

iBeacon API

フレームワーク

CoreLocation.framework

クラス

CLBeacon

プロパティ

ProximityUUID:Beaconに設定したUUID

major:Beaconに設定ししたメジャー番号

minor:Beaconで設定したマイナー番号

Proximity:相対距離、下記4つがCLProximityに定義されている。

(Immediate/Near/Far/Unknown) ※おおよそ1m/5m/10mを表しているようです。

ドキュメントを読む限りは非常にシンプル。

サンプルでは2つのアプリに別れています。

Beaconを監視する側:Central(監視)

Beacon側:Peripheral

取りあえず2台のiPhoneが手元にあるので、古いiPhoneを発信器として使う事にしました。

サンプルは簡単で、UUIDを触る程度です。

 

しかし、実装して動かしたのですが受信側のアプリには全く反応がありません。

ソースを修正したり、デバックしたのですが反応なし。

ちょっと疲れて、GOOGLEで探すとMacをBeaconに出来ると書かれていたので試す事にしました。

http://weekly.ascii.jp/elem/000/000/210/210915/

 

JavaScriptのnodo.jsを使って動かすようです。サイトに言ってnodo.jsをインストール

ターミナルを開いて実行。bleaconライブラリーインストール。

MACのUUIDを取得

JAVAScriptで10行のコードを作成、保存

ターミナルから実行

それで先ほどのiPhoneのBeacon監視アプリを実行。

来ました!

リージョン監視のメッセージ

続いてレイシングのメッセージ

はいOKです。

 

その後、調べて分かったのですが、私の古いiPhone4はBLEをサポートしていなかったようです。

Bluetooth4.0はiPhone4S以上からのようです。

なので、iBeaconを使うにはそれ以上のiPhoneが必要です。

テスト用に残しておいたSIMフリーのiPhoneなのですが、そろそろ終了の時期なんでしょうか。

iPhone6が今秋に登場という事なの、それと交換するかな。

 

アプリックのBeaconモジュールが¥1600だったので2つ買いました。

設定用のiPhoneアプリをインストールしてUUID等を登録するようです。

問題なく動きました。

 

次回は、このiBeacon機能を街角紹介に組み込んで行きます。