LoginSignup
12
12

More than 5 years have passed since last update.

BeaconBridgeを利用したiOSアプリを作ってみた

Posted at

ビーコンも届いたので、前に利用登録したBeaconBridgeのSDKを利用して、iOSアプリを作ってみました。
備忘録を兼ねて、少し実装についてまとめてみました。

なお、この記事をベースに実装したものはGitHubで公開しています。
https://github.com/mugicha755/BeaconBridge-Sample

BeaconBridgeのユーザ登録と概要はこちら
BeaconBridgeにユーザ登録してリファレンスアプリを使ってみた(iOS)

アプリケーション概要

概要
自席にビーコンを置いて、在席と離席をロギングする。

ひとまずビーコンアプリとしては動作確認しやすい簡単なもので。
ちゃんと作れば出退勤の管理ができるはず。

実装

管理画面

1. サービス追加

サービスを登録。
ひとまず、「サンプル」として新規登録。
add_service

2. ビーコン登録

利用するビーコン情報を登録。
add_uuid

UUIDは下記Webサイトで生成。
http://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx
手順からは省略しましたが、ビーコン情報の設定はGimbalビーコンにもしました。

3. アクション登録

ビーコンを検知した時に実行するアクションの情報を登録。
add_action

key に [data_type3] と設定しておくと、SDKがiOS用の定義として認識するらしい。

4. ルール登録

登録したビーコンの「Enter」と「Exit」を検知した時の動作を登録。
「Enter」で自席にいる、「Exit」で自席から離れたと判断するイメージです。
add_rule

登録したビーコンとアクションをそれぞれ「Enter」イベントと紐づける。
スクリーンショットは用意してませんが、「Exit」も同様に。

5. APIキー発行

「+」ボタンをクリックし、ラベルを設定すると該当サービスのAPIキーが発行される。
add_rule

このAPIキーをSDKに渡すことで、SDKとユーザページで作成したビーコン検出のルールが紐付けられる。

アプリケーション実装

1. imhereSDK.frameworkインポート

imhereSDK.frameworkをプロジェクトにドラッグ&ドロップ
sdk_import

imhereSDK.frameworkはユーザページからDLしました。
BeaconBridgeなのに、imhereなのが凄く違和感がありますが、どうやら開発コードらしいです。

2. iOS SDKのframeworkインポート

下記3つをインポート
・CoreLocation.framework
・CoreBluetooth.framework
・SystemConfigration.framework

sdk_import

3. plist更新

iOS8よりCoreLocation(iBeacon)で近接監視するために必要になった認証情報をinfo.plistに追記。

Key
NSLocationAlwaysUsageDescription

Type
String

Value
任意の文字列

plist

ソースコード表示にして直接編集しても可。

info.plist
<key>NSLocationAlwaysUsageDescription</key>
<string>任意の文字列</string>

4. 実装

最低限次の3点を実装することで動作する。
・4-1. SDK初期化 & 検出ルール更新
・4-2. ビーコン検出開始
・4-3. delegateの実装

4-1. SDK初期化 & 検出ルール更新

sdkMng.m
#import<imhereSDK/imhereSDK.h>
#import<imhereSDK/imhereDefine.h>
#import<imhereSDK/sdkResult.h>


#define URL     {BeaconBridge trial URL}
#define API_KEY {Your API_KEY}


@interface sdkMng()<imhereSDKDelegate>
{
    imhereSDK *_sdk;
}

~ 省略 ~

-(void)setSDK{
    // 初期化 push通知は利用しないのでnilを設定
    _sdk = [[imhereSDK alloc] init];
    _sdk.delegate = self;
    [_sdk initialize:[NSURL URLWithString:URL]
                                   apiKey:API_KEY
                                pushToken:nil];
    // ルール同期                        
    [_sdk syncRules];
}



4-2. ビーコン検出開始

sdkMng.m

-(void)startMonitor{
    [_sdk startMonitor];
}

4-3. delegateの実装

sdkMng.m
#pragma -mark sdk delegate method
// ビーコン検出時のアクションの実行可否
-(id)notifyPreBeaconAction:(NSDictionary *)pAction{
    // 実行を通知
    return KEY_ACTION_EXECUTION;
}

//ビーコン検出時のアクション情報
-(void)notifyBeaconAction:(sdkResult *)pPostResult
           withActionList:(NSArray *)pActList{
    //アクション検出でロギング
}

//サーバ側に通知する付加情報の設定
-(NSDictionary *)confirmExtraData:(NSDictionary *)pEvents
{
    // 特に追加する情報なしのため、そのまま通知
    return pEvents;
}



作ったアプリケーションの画面

sdk_import

とりあえず、動作確認ができる程度のアプリです。
勤怠管理までするなら画面やデータの永続化含めていろいろと検討が必要...

まとめ

・SDKで提供されているため、自分で一から実装するよりかなり楽(特にサーバとの連携あたり)
・今回作ったものはクライアントアプリで閉じた実装なので、もう少し色々なことも試してみようと思う

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12