20131026 i beaconワークショップ

Post on 01-Jul-2015

37.968 views 1 download

description

iBeaconの体験と、SDKの解説。iOSアプリとPassbook連携について。

Transcript of 20131026 i beaconワークショップ

iBeacon体験講座(iOS):iOS開発者向け

ドリームコア 1F モバイル・コア 10月25日

!(合)わふう 上原 昭宏

(有)トリガーデバイス 佐藤 忠彦

目次

• iBeaconのデモンストレーション

• Bluetooth Low Energyって?

• iOSアプリのビーコンの発信と受信

• Passbookとの連携

デモンストレーション

• Passbookとの連携

• サンプルiOSアプリケーションを動かす

今回の資料• サンプルソースコード • https://github.com/reinforce-lab/

CoreBluetooth_samples

• スライド • http://www.slideshare.net/reinforcelab/

• 解説(ブログ記事)

• http://reinforce-lab.github.io/blog/2013/10/21/ibeacon/

Passbookとの連携

• できること • ロック画面表示時にパスを表示

• デモンストレーション • パスを入手 • ビーコンの表示

iPhoneの設定

iPhoneの設定

iPhoneの設定

Passbookの入手(1/2)パス発行URL

https://pass.is/1B7fvaX1VrrZMqn

Passbookの入手(1/2)パス発行URL

https://pass.is/1B7fvaX1VrrZMqn

Passbookの入手(1/2)パス発行URL

https://pass.is/1B7fvaX1VrrZMqn

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

Passbookの入手(2/2)

表示確認

表示確認位置アイコンが表示されます

表示確認位置アイコンが表示されます

iOSアプリケーション

• 役割とできること • 発信、ビーコン • 受信、領域監視と距離推定

• デモンストレーション • アプリケーションを起動

アプリのインストール

• ソースコード • https://db.tt/S0Wp3U8q (Dropbox zip形式)

• http://goo.gl/8DqaVK (Github)

• インストール • iBeacon/simpleBeacon.xcodeproj

• Xcode5でシミュレータのBLEサポートなくなる

ビーコン(発信) ビーコンの受信 Bluetooth LE のアドバタイズメント

のダンプ

メソッド呼び出しのダンプ

ビーコン(発信) ビーコンの受信 Bluetooth LE のアドバタイズメント

のダンプ

ビーコン(発信)

パスを入手は、パスのリンク先 ビーコンのSWで、ビーコン発信

ビーコン(発信)

パスを入手は、パスのリンク先 ビーコンのSWで、ビーコン発信

ビーコン(発信)

パスを入手は、パスのリンク先 ビーコンのSWで、ビーコン発信

ビーコン(発信)

パスを入手は、パスのリンク先 ビーコンのSWで、ビーコン発信

ビーコン(発信) ビーコンの受信 Bluetooth LE のアドバタイズメント

のダンプ

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコンの受信

• ReginをON

• 位置の利用を許可 • RangingをON

• どなたか、ビーコン発信?

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

• Accuracy:だいたいの精度(m)

ビーコン(発信) ビーコンの受信 Bluetooth LE のアドバタイズメント

のダンプ

Bluetooth LE のアドバタイズメント

のダンプ

• Bluetooth LEの生パケット

• ビーコンの情報はフィルタ • 30ミリ秒ごとにでているので

Bluetooth LE のアドバタイズメント

のダンプ

• Bluetooth LEの生パケット

• ビーコンの情報はフィルタ • 30ミリ秒ごとにでているので

Bluetooth Low Energy

Bluetoothの歴史

Bluetoothの歴史

Bluetoothの歴史

2007 V2.1 EDR

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

2006 Wibree

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

2006 Wibree

2010 V4.0 Low Energy

!= 3.0 + LE

!!!!!

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

2006 Wibree

2010 V4.0 Low Energy

!= 3.0 + LE

!!!!!

Low Energy

Bluetooth SMART ロゴ

• SMART / SMART READY

ペリフェラルの発見

• アドバタイズメント • パケットを送信 • 20ミリ秒~1.3秒周期

• デバイス名などの情報

Ad

Ad

Ad

Ad

Ad

t

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Ad Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Ad Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

• 消費電力

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

• 消費電力• 受信はとても食う

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

• 消費電力• 受信はとても食う• 受信の時間が長い

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

• 消費電力• 受信はとても食う• 受信の時間が長い• セントラルの役目

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

CoreLocation

バックグラウンド・モード

UUIDの生成

• Mac OSで、uuidgen コマンド

リージョン監視DetectorViewController.m

リージョン監視DetectorViewController.m

リージョン監視• 監視対象

• UUIDでフィルタリング、major/minorは任意

• アプリあたり20が上限値 (iOS 7.0.2)

• 監視開始時にビーコン範囲内 → in通知がこない

• 通知は、領域を”またいだ時”に発生する

• ビーコンの領域からでると、exit通知

• 20秒以上、200m以上のエリア移動、実際35~50秒位

バックグラウンド動作• バックグラウンド・モード • 領域に入る/出るの通知 (10秒の処理時間)

• 電力を消費し続ける (4sだと1日で50%)

• ビーコン領域監視のスタート • 地理的な領域監視 (最も荒いモードで)

• Passbook連携、アプリがフォアグラウンド

レンジングDetectorViewController.m

レンジング• 監視対象

• UUIDおよびmajor/minorでフィルタリング

• 上限は不明(180は登録できた)

• 振る舞い • 1秒ごとに、検出したビーコンの配列を通知

• 同じビーコンでも、1秒後のインスタンスは別物

• 同じビーコンの通知が2つあることが稀にあるらしい

• ランダムアドレスでアドレス値が変更するため

start/stopの呼び出し順番

• レンジングの通知が止まらない • リージョン監視の開始 → (リージョンに入る) → レンジングの開始 → レンジングの停止 → リージョン監視の停止

• 問題ない • リージョン監視、レンジングを、どちらかだけ利用 • リージョン監視の開始 → (リージョンに入る) → レンジングの開始 → リージョン監視の停止 → レンジングの停止

Passbook

Passbookでの利用• Passbook Package Format Reference

• https://developer.apple.com/library/ios/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/Introduction.html

Passbookでの利用• Passbook Package Format Reference

• https://developer.apple.com/library/ios/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/Introduction.html

• UUID/major/minor

• ロック画面表示名 • いくつでも

!

• http://passkit.com

ビーコン

パケット構造

パケット構造

パケット構造

パケット構造

• 02 01 1A

• AD Type 0x01, flag,

• General Discoverable Mode,

• Simultaneous LE and BR/EDR to Same Device Capable (Controller)

• Simultaneous LE and BR/EDR to Same Device Capable (Host)

パケット構造

!

• 1A FF 4C 00 02 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 4A 17 A5 C5

• AD Type|会社ID | 不明 | UUID |major| minior|RSSI

• UUID, major, minor, RSSIはビッグエンディアン

• RSSIはデフォルト値-59dBm (1m離れたところでのRSSI)

バックグラウンド動作

• 無理

ハードウェア

http://estimote.com

https://www.sticknfind.com