92
iBeacon体験講座(iOS)iOS開発者向け ドリームコア 1F モバイル・コア 1025()わふう 上原 昭宏 ()トリガーデバイス 佐藤 忠彦

20131026 i beaconワークショップ

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 20131026 i beaconワークショップ

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

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

!(合)わふう 上原 昭宏

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

Page 2: 20131026 i beaconワークショップ

目次

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

• Bluetooth Low Energyって?

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

• Passbookとの連携

Page 3: 20131026 i beaconワークショップ

デモンストレーション

• Passbookとの連携

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

Page 4: 20131026 i beaconワークショップ

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

CoreBluetooth_samples

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

• 解説(ブログ記事)

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

Page 5: 20131026 i beaconワークショップ

Passbookとの連携

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

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

Page 6: 20131026 i beaconワークショップ

iPhoneの設定

Page 7: 20131026 i beaconワークショップ

iPhoneの設定

Page 8: 20131026 i beaconワークショップ

iPhoneの設定

Page 9: 20131026 i beaconワークショップ

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

https://pass.is/1B7fvaX1VrrZMqn

Page 10: 20131026 i beaconワークショップ

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

https://pass.is/1B7fvaX1VrrZMqn

Page 11: 20131026 i beaconワークショップ

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

https://pass.is/1B7fvaX1VrrZMqn

Page 12: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 13: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 14: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 15: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 16: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 17: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 18: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 19: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 20: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 21: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 22: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 23: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 24: 20131026 i beaconワークショップ

Passbookの入手(2/2)

Page 25: 20131026 i beaconワークショップ

表示確認

Page 26: 20131026 i beaconワークショップ

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

Page 27: 20131026 i beaconワークショップ

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

Page 28: 20131026 i beaconワークショップ

iOSアプリケーション

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

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

Page 29: 20131026 i beaconワークショップ

アプリのインストール

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

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

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

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

Page 30: 20131026 i beaconワークショップ
Page 31: 20131026 i beaconワークショップ
Page 32: 20131026 i beaconワークショップ
Page 33: 20131026 i beaconワークショップ
Page 34: 20131026 i beaconワークショップ

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

のダンプ

Page 35: 20131026 i beaconワークショップ

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

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

のダンプ

Page 36: 20131026 i beaconワークショップ

ビーコン(発信)

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

Page 37: 20131026 i beaconワークショップ

ビーコン(発信)

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

Page 38: 20131026 i beaconワークショップ

ビーコン(発信)

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

Page 39: 20131026 i beaconワークショップ

ビーコン(発信)

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

Page 40: 20131026 i beaconワークショップ

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

のダンプ

Page 41: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 42: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 43: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 44: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 45: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 46: 20131026 i beaconワークショップ

ビーコンの受信

• ReginをON

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

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

!

• ビーコン:UUID/Major/Minor

• Proximity:おおよその距離

• RSSI 受信信号(対数 dBm)

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

Page 47: 20131026 i beaconワークショップ

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

のダンプ

Page 48: 20131026 i beaconワークショップ

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

のダンプ

• Bluetooth LEの生パケット

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

Page 49: 20131026 i beaconワークショップ

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

のダンプ

• Bluetooth LEの生パケット

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

Page 50: 20131026 i beaconワークショップ

Bluetooth Low Energy

Page 51: 20131026 i beaconワークショップ

Bluetoothの歴史

Page 52: 20131026 i beaconワークショップ

Bluetoothの歴史

Page 53: 20131026 i beaconワークショップ

Bluetoothの歴史

2007 V2.1 EDR

Page 54: 20131026 i beaconワークショップ

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

Page 55: 20131026 i beaconワークショップ

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

Page 56: 20131026 i beaconワークショップ

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

Page 57: 20131026 i beaconワークショップ

Bluetoothの歴史

2007 V2.1 EDR

2009 V3.0 High Speed

2010 V4.0 Low Energy

2004 Bluetooth Low End Extension

2006 Wibree

Page 58: 20131026 i beaconワークショップ

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

!!!!!

Page 59: 20131026 i beaconワークショップ

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

Page 60: 20131026 i beaconワークショップ

Bluetooth SMART ロゴ

• SMART / SMART READY

Page 61: 20131026 i beaconワークショップ

ペリフェラルの発見

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

• デバイス名などの情報

Ad

Ad

Ad

Ad

Page 62: 20131026 i beaconワークショップ

Ad

t

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Page 63: 20131026 i beaconワークショップ

Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Page 64: 20131026 i beaconワークショップ

Ad Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Page 65: 20131026 i beaconワークショップ

Ad Ad

t受信

tAd

Ad

Ad

Ad

ペリフェラル

セントラル

Page 66: 20131026 i beaconワークショップ

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

Page 67: 20131026 i beaconワークショップ

• 消費電力

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

Page 68: 20131026 i beaconワークショップ

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

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

Page 69: 20131026 i beaconワークショップ

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

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

Page 70: 20131026 i beaconワークショップ

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

Ad Ad

t受信

tAd

Ad

Ad

Ad

接続処理

ペリフェラル

セントラル

Page 71: 20131026 i beaconワークショップ

CoreLocation

Page 72: 20131026 i beaconワークショップ

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

Page 73: 20131026 i beaconワークショップ

UUIDの生成

• Mac OSで、uuidgen コマンド

Page 74: 20131026 i beaconワークショップ

リージョン監視DetectorViewController.m

Page 75: 20131026 i beaconワークショップ

リージョン監視DetectorViewController.m

Page 76: 20131026 i beaconワークショップ

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

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

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

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

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

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

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

Page 77: 20131026 i beaconワークショップ

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

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

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

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

Page 78: 20131026 i beaconワークショップ

レンジングDetectorViewController.m

Page 79: 20131026 i beaconワークショップ

レンジング• 監視対象

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

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

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

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

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

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

Page 80: 20131026 i beaconワークショップ

start/stopの呼び出し順番

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

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

Page 81: 20131026 i beaconワークショップ

Passbook

Page 82: 20131026 i beaconワークショップ

Passbookでの利用• Passbook Package Format Reference

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

Page 83: 20131026 i beaconワークショップ

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

Page 84: 20131026 i beaconワークショップ

ビーコン

Page 85: 20131026 i beaconワークショップ
Page 86: 20131026 i beaconワークショップ

パケット構造

Page 87: 20131026 i beaconワークショップ

パケット構造

Page 88: 20131026 i beaconワークショップ

パケット構造

Page 89: 20131026 i beaconワークショップ

パケット構造

• 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)

Page 90: 20131026 i beaconワークショップ

パケット構造

!

• 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)

Page 91: 20131026 i beaconワークショップ

バックグラウンド動作

• 無理

Page 92: 20131026 i beaconワークショップ

ハードウェア

http://estimote.com

https://www.sticknfind.com