Raspberry piとiBeaconで出勤簿風を作ってみた

Raspberry piとiBeaconで出勤簿風を作ってみた

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

iOS7が登場してからiBeaconって流行ってますね!

そこで私もiBeaconを使って簡単なデモを作成してみました。

用意したもの

 ◼︎iMac
 ◼︎Raspberry pi
2015020402

 ◼︎Bluetooth ドングル
2015020403

 ◼︎iPhone6plus

【デモ画面】
・出社したとき
2015020404

・退社したとき
2015020405

・ログもしっかり残ってます!!
2015020406

ベンチマーク

全体の構成

rasberry側

  • rasberry piにbluetooth関連のファイルをインストールします

    bluez
    https://www.kernel.org/pub/linux/bluetooth/
    bluez-ibeacon
    https://github.com/carsonmcdonald/bluez-ibeacon

  • rasberry piにbluetoothドングルを差し込みます
  • rasberry piでibeaconを起動させます
  • [sh] ./ibeacon 200 0772309735BF443AAF5913F8374702C6 1 1 -29
    [/sh]

iPhone側

  • iOSアプリを開発します!
  • iPhoneのbluetoothをオンにします!
  • beaconをキャッチします!
  • LocalNotificationで通知をだしてサーバーにログを送信します

重要なポイント

rasberry piが無くてもiMacでもBluetoothの電波を飛ばすことが可能です。

しかし、2015年1月現在YosemiteではMac単体で電波を飛ばすことができなくなっております。

上記Bluetoothドングルをさして動かすことができるのですが、他の有線で繋がっていないBluetoothキーボード などがつながらなってしまいました・・・

今回はraspberry piがありましたので、それを利用してみました。

アプリ識別子 (UUID)

[sh]./ibeacon 200 0772309735BF443AAF5913F8374702C6 1 1 -29[/sh]

このibeaconを起動させる際に埋め込むUUID(0772309735BF443AAF5913F8374702C6)はアプリで識別するのに必要です。
生成するときはターミナルを開いて「uuidgen」と入力し、出てきたuuidを利用するといいと思います。

plist入力

 iOS8以降からCLLocationMangerを使用する際は、それを使用する範囲(アプリを開いている間だけ or アプリを閉じた後も常時 )の設定とその情報をplistに入力しておく必要があります。
 ↓以下のいずれか
[sh]   NSLocationAlwaysUsageDescription
  NSLocationWhenInUseUsageDescription
[/sh]

beaconイベント

  beaconを受信した際に呼ばれるイベント[sh]- (void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region[/sh]と
  beaconが受信されなくなった際に呼ばれるイベント[sh]- (void)locationManager:(CLLocationManager *)manager
didExitRegion:(CLRegion *)region[/sh]  がありますが、
 
アプリを初回に起動した瞬間にbeaconの範囲内にiPhoneが存在していると、didEnterRegionは呼ばれません。

ので、raspberry piから結構離れてみるか、一旦raspberry piのbeaconをストップして再起動してみましょう。

またdidExitRegionはbeaconが受信されなくなってから20~30秒近く経過しないと動きませんので、気長くまってみましょう!

バックグラウンド対応

 iPhone側からサーバーに通信をするときは、よくNSURLConnectionを活用しますが、バックグランドでは動きません。
 
今回、NSURLSessionを使ってバックグランドからの通信を実装しております。
 参考までの今回のコードを載せておきます

[sh]   NSURLSessionConfiguration* dfConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@”Background”];
NSURLSession* session = [NSURLSession sessionWithConfiguration:dfConfig delegate:self delegateQueue:nil];

NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:query]];
NSURLSessionTask* task = [session dataTaskWithRequest:request];

[task resume];
[/sh]

iBeaconの活用イメージ

 各社が様々なibeaconを活用したソリューションを提案しておりますが、現在の大きな問題は「iPhoneのbluetoothをオンにしておかなれければいけない(電池が減りやすい)」事だと思います。

今回の出勤簿風も、「出勤確認のためにわざわざbluetoothをオンにしておく必要があるのか?」と言われたら・・・
そこまでの価値は今はないでしょう!!!

価値があるアプリをユーザーに提供することを心がけたいですね!

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ