SlideShare a Scribd company logo
1 of 104
Download to read offline
iOS7におけるBluetooth LEの活用法

!

MOSA Software Meeting 2013
11月29日
!
(合)わふう 上原 昭宏
目次
•

Bluetooth Low Energyとは

•

iOS7でのBluetooth LE利用
•

•

iBeacon

サービスとハードウェアとアプリケーション開発
•

ハードウェア、ガジェット

•

iOSアプリケーション
Bluetooth Low Energy
•

超低消費電力無線通信
•

コイン型電池1つで年単位の無線通信

•

電池交換不要、使い捨て、低コスト

•

ウェアブル、スマートフォン向き

•

Bluetooth 3.0とは物理層から異なる技術

•

通信距離 最大 ∼ 50m

•

低頻度(1秒に1 10回)、少量のデータ(20バイト)
Bluetoothの歴史
2007年

2009年

2010年

Ver2.1

Ver3.0

Ver4.0

Enhanced Data Rate

High Speed

3.0とLow Energy
の統合

2004年

2006年

Bluetooth

Low End Extension

Wibree
接続の後方互換性
Bluetooth Smart は3.0までの機器とはつながらない

Bluetooth 4.0
Ver 3.0
までの技術

デュアルモード・デバイス
(iPhoneやPC)

Low Energy
シングルモード・デバイス
(周辺機器)
よくある質問
•

略称は?
•

•

超低消費電力で音声を送りたい
•

•

Bluetooth Low Energy、BLE、Bluetooth Smart

Bluetooth3.0を使ってください

すれ違い、ファイル交換に使いたい
•

iOSアプリ間の通信速度は3 10kビット/秒程度
https://itunes.apple.com/sr/app/bluespeed/id579118786?mt=8
iOSとBluetooth LE
iOSとBLE
2011年

•

•

2013年

iPhone4s
iOS5
•

2012年
iPhone5
iOS6

iPhone5s
iOS7

世界初のBT4
MFiなしに

一般開発者に解放
ハードとつながる

アプリが作れる

•

周辺機器相当


•

端末の買い替え周期

(ペリフェラル)

になれる

•

周辺機器サポート

•

独自のサービス展開
iOS7のBluetooth LE利用
•

iOS7から、iOSがBluetooth LEを利用する

•

周辺機器のサポート
•

キーボード: HID Over GATT Profile (HOGP)

•

ゲームコントローラ:独自、MFiで提供

•

iBeacon

•

Apple Notification Center Service
iBeacon
iBeaconってなに?
•

Bluetooth LEを利用した、領域と近接検出
•

イメージ的に独自のGPS発信機を設置できる感じ

•

128­bitの識別子、16ビットのmajor/minor番号
•

1企業1UUID、店舗、店舗内位置

•

ビーコン電波検出、による位置イベントのトリガー

•

Paypal Beaconは別物の決済用途でしょうが…
iOSアプリとiBeacon
•

CoreLocationフレームワークに統合

•

ビーコンを受信するiOSアプリケーション
•
•

•

フォアグラウンド: 領域検出とレンジング
バックグラウンド: 領域検出

iOSアプリからの、ビーコンの送信
•

•

フォアグラウンドでのみ

範囲は∼30m程度、送信電力を絞れば∼1mなども
PassbookとiBeacon
•

ロック画面の表示タイミング
•

•

ビーコンに一致したパスがあれば
•

•

ビーコン信号をチェック

ロック画面に表示

会員カード、支払いタイミング…
Ad

ペリフェラル

受信

セントラル
•

Ad

接続
処理

デバイス発見の仕組み利用
•
•

Ad

•

Ad
Ad

Ad

BLE規格に準拠
Androidでの実装もできる

距離推定は受信電波の強さで
•

•

すごく近い、近い、遠い

放射パターンをいじれば
•

お店の入り口、ショーウイン
ドウごとのアクション
パケットをスニッフィング

http://www.ti.com/tool/cc2540emk-usb
http://www.tij.co.jp/tool/jp/packet-sniffer
フラグ

• 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

•

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


•

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

4C 00

02 15

AD Type|会社ID | 不明 |

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 4A 17 A5 C5	

UUID

|major|minior|RSSI
iBeacon+iOSアプリ
iBeaconの資料
•

サンプルソースコード

•

https://github.com/reinforce-lab/
CoreBluetooth_samples

•

スライド

•

http://www.slideshare.net/reinforcelab/

•

解説(ブログ記事)

•

http://reinforce-lab.github.io/blog/2013/10/21/ibeacon/
iOSアプリケーション
•

CoreLocationフレームワークに統合
•

•

動作は実機のみ、シミュレータは使えない

アプリができること
•

受信、領域監視と距離推定

•

発信、ビーコン
リージョン監視のフロー
1. ハードウェアのサポートを調べる
2. 領域監視対象の指定と通知を受け取るタイミング指定
3. 監視の開始/停止と通知の取得

変更
リージョン監視のフロー
1. ハードウェアのサポートを調べる
[CLLocationManager isMonitoringAvailableForClass:
[CLBeaconRegion class]]

iOS7対応機種のうち、
iPhone4だけは、Bluetooth LE非対応なので、
ハードウェアサポートされない
変更
リージョン監視のフロー
2. 領域監視対象の指定と通知を受け取るタイミング指定
CLBeaconRegion *region =
[[CLBeaconRegion alloc]
initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:kBeaconUUID]
identifier:@ identifier ];
!

CLBeaconRegionクラス
BOOL notifyOnEntry :
領域 in, デフォルト YES
BOOL notifyOnExit :
領域 exit, デフォルト YES
BOOL notifyEntryStateOnDisplay : 画面表示時, デフォルト NO

変更
リージョン監視のフロー
3. 監視の開始/停止と通知の取得
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
!

[locationManager startMonitoringForRegion:region];
[locationManager stopMonitoringForRegion:region];
!
CLBeaconRegionクラス
BOOL notifyOnEntry :
領域 in, デフォルト YES
BOOL notifyOnExit :
領域 exit, デフォルト YES
BOOL notifyEntryStateOnDisplay : 画面表示時, デフォルト NO

変更

CLLocationManagerDelegateプロトコル
-(void)locationManager:didEnterRegion:
-(void)locationManager:didExitRegion:
-(void)locationManager:didDetermineState:forRegion:
リージョン監視(1/2)
•

監視対象の設定
•
•

•

UUIDを指定、major/minorは任意
1アプリあたり最大20個 (iOS 7.0.2)

領域のin/exit通知のタイミング
•

notifyOnEntryがYES、ビーコン検出、ただちにin通知

•

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

•

20秒以上、200m以上のエリア移動 (実際35∼50秒位)

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

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

•

CLLocation Manager, - (void)requestStateForRegion:
リージョン監視(2/2)
•

notifyEntryStateOnDisplayがYES
•

領域のチェック・タイミング

•

メソッドを呼び出した時、画面が表示された時に領域確認
•

•

デリゲート呼び出しが複数回くる → アプリでチェック

バックグラウンド動作
•

iOSが、terminated から backgroundに遷移遷移
•

ユーザがタスクスイッチャーから削除しない限り
バックグラウンド
•

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

•

領域に入る/出ると通知 (10秒の処理時間)
レンジングはできない

電力消費量
•
•

•

領域in/exit iPhone4s 1日で50%, iPhone5は電池を消費しない (7.0.2)
notifyEntryStateOnDisplayでは、iPhone4sでも電池は減らない

領域監視の起動/停止
•

地理的な領域監視 (最も荒いモードで)

•

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

監視対象
•

UUIDを指定、major/minorも指定可能

•

1秒ごとに、検出したビーコンの情報を通知

•

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

•

距離は電波強度で推定
•

とても近い、近い、遠いの3種類
レンジングのコード
DetectorViewController.m
start/stopの呼び出し順番
•

リージョン監視をONのちレンジングをON (7.0.4)
•

リージョン監視の開始 → (リージョンに入る) → レン
ジングの開始 → リージョン監視の停止 → レンジング
の停止

•

レンジングの通知が止まらない
•

リージョン監視の開始 → (リージョンに入る) → レ
ンジングの開始 → レンジングの停止 → リージョン
監視の停止
ビーコンの送信
•

CoreBluetoothフレームワークを使う

•

パケットのデータは、CLBeaconRegionで生成

•

ビーコンの送信は、アプリケーションがフォアグラ
ウンドにあるときのみ
•

OS Xでも、ビーコンの送信ができる
PassbookとiBeacon
• Passbook Package Format Reference	

•

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

• iOS7から	

• 指定項目	

• UUID/major/minor	

• ロック画面表示名	

• いくつでも指定可能
iBeaconのよくある質問
•

AndroidでのiBeaconの検出?
•

•

決済はどうするのか?
•

•

アプリケーションで各自実装

チート対策は?
•

•

独自に実装可能(API Level: 18. Android 4.3)

簡単にコピー可能

AppleはiBeaconをクローズしないか?
•

公式に仕様を公開してはいない
iBeaconの代替手段
•

独自に、iBeacon相当の機能は、実装可能
•

•

CoreBluetoothフレームワーク

Appleにしかできないこと
•

バックグラウンド動作

•

Passbookの連携
iBeaconの取り組み
•

役割と立場
•
•

•

サービスの企画、運営が権限をもつのがいい
アプリケーション、ウェブ開発、ビーコン設置

実施期間
•

•

まず短期間でテスト、のち常設

本音と建前
•
•

要は、ストーキング。プレミアムな顧客来店検出、動線検出

•
•

クーポン発行、お客様に合わせた…、ネットからリアルに…

個人情報と統計データの扱い、JRの二の舞い…

iOS7.1β…

変更
ハードウェア

http://estimote.com

https://www.sticknfind.com
Apple Notification Center Service
!

ANCS
ANCSとは
•

iOSの通知をBLEデバイスに伝える汎用の仕組み
•

イベント通知と、詳細情報の読み出しを提供

•

電話やメール着信、位置変化、ファイナンス…

•

意味付けは拡張/変更どんどんありそう

•

あきらかにiWatch自社向け開発…
ANCSの情報
•

Apple公式 https://developer.apple.com/library/ios/documentation/
CoreBluetooth/Reference/
AppleNotificationCenterServiceSpecification/

•

ブログ http://reinforce-lab.github.io/blog/2013/10/28/ancs/

•

サンプルコード https://github.com/reinforce-lab/
CoreBluetooth_samples/tree/master/ANCS/
ANCSの試作
•

通知を受け取るiOS7アプリケーションは作れない
•

•

ANCS関連の通信はiOSが握る

周辺機器の試作
•

いきなりカスタムハードは辛い、iOSで試作

•

iOS7はiOSが管轄、アプリはさわれない

•

iOS6なら触れる、これで試作するのがいい
アプセサリ
(Appcessory)
Application + Accessory
http://www.fitbit.com/jp
Appcessoryの粗利益
•
販売管理等
粗利益

工場出荷価格

この数値は、根拠のない例です

•

販売価格 10,000円
•

50%
30%

•

仮に、粗利益20%として

•

20%

年2000円のウェブサービス

買い替え動機
•

破損、水没

•

新モデル
ハードウェア
プロトタイピング
http://getpebble.com

http://www.lumoback.com

http://www.kickstarter.com

http://www.wahoofitness.com
http://www.haxlr8r.com
pronounced Hackccelerator
プロトタイピング
•

iPhoneを利用する
•

•

プロトタイピングに使えるもの
•

•

加速度、ジャイロ…

SensorTag, Konashi, RFduino

一般に見せるときに注意すること
•

電波法の技術基準適合証明

•

Bluetoothの認証は、試作中は不要
http://goo.gl/d3HUL
TI Sensor tag

http://www.ti.com/tool/
cc2541dk-sensor

IR temperature Sensor	

Humidity Sensor	

Pressure Sensor	

Accelerometer	

Gyroscope	

Magnetometer
Konashi

http://konashi.ux-xu.com
RFduino

http://www.rfduino.com
モジュール
•

RF回路部分を小さな基板にまとめたもの
•

各種の認証を取得済
•

電波法 (各国ごとに1万ドルくらい)

•

Bluetooth 製品登録 (1万ドルくらい)

•
•
•

500円玉に乗るサイズ
内部のマイコンでユーザ・アプリが動く

開発用キット
•

∼500ドル

http://www.bluegiga.com/
BLE112_Bluetooth_Smart_module
オリジナル機器の開発
•

発注者がだれか?
•

•

企画に権限がよい (iBeaconのように)

担当分野をどこで切るか
•
•

•

ハードウェア+ドライバ
挙動 = ハード

通信

iOS(BTserver)

トラブルに備える (納品後にiOSの振舞いが変化)
•

デモアプリ(動作確認、検証)が大事
CoreBlutooth	

フレームワーク
•

通信手順を抽象化
•

発見

•

接続 / 切断

•

読み書き, 通知

•

バックグラウンド動作

•

実機でのみ動作, シミュレータは使えない
ネットワーク・トポロジ
•

スター型
•

•

接続数の上限がない

•
•

1つのセントラルと多数のペリフェ
ラル

iPhoneの同時接続は10

パケットの中継機能はない

セントラル
(Central)
ペリフェラル
(Peripheral)

✗
ペリフェラルの発見
•
•

Ad

Ad

20ミリ秒 1.3秒周期

•

Ad

パケットを送信

•

Ad

アドバタイズメント

デバイス名などの情報
適応周波数ホッピング
適応周波数ホッピング
適応周波数ホッピング
Bluetooth LEの振る舞い
•

iOSアプリケーションが接続と切断をにぎる
•

ユーザはゼロ設定、アプリで設定 (WiFiの場合…)

•

すぐ見つかる(∼20ミリ秒)、すぐつながる(数秒)

•

ペアリングは、ペリフェラルの設計次第
•

•

Bluetoothの機器一覧表示
•

•

無入力、ユーザのコード入力

共有

を保存した機器のみ表示

目の前のクリスマスツリーが、自分のスマフォで…
•

すれ違いてきな振る舞いで、展示物が…
iOS アプリケーション
Centralについて
ソースコード:
https://github.com/reinforce-lab/CoreBluetooth_samples/tree/master/
BSHSBTPT01_samples
実装の手順
•

@import CoreBluetooth

•

CBCentralManagerDelegate

•

CBPeripheralDelegate

CBCentralManager

セントラル
(Central)

ペリフェラル
(Peripheral)

CBPeripheral

変更
CBCentralManagerのインスタンス
•

CBCentralManager initWithDelegate:queue:options:

•

オプション
•

CBCentralManagerOptionShowPowerAlertKey;
•
•

•

Bluetooth OFFのときダイアログ表示?
デフォルトNO

CBCentralManagerOptionRestoreIdentifierKey;
•

インスタンスの識別文字列
Bluetoothの状態変化
•

centralManagerDidUpdateState:	

•

CBCentralManagerStatePoweredOff	


•

CBCentralManagerStatePoweredOn	


•

CBCentralManagerStateUnauthorized	


•

CBCentralManagerStateUnsupported

変更
デバイスの発見
•

CBCentralManager, scanForPeripheralsWithServices:options:	


•

サービス	

•

•

ペリフェラルのサービスを指定	


オプション	

•

CBCentralManagerScanOptionAllowDuplicatesKey	

•

ペリフェラルの発見を重複して通知するか	

•

デフォルト、NO
変更
// デバイスの発見時処理を行います。
// スキャンで指定したサービスがあるデバイスのみが通知されますが、同じような機能を持った対象外の装置を発見す
るかもしれません。
// アドバタイズメント・パケットに含まれる情報は、advertisementDataから得られます。デバイス名などで判別
します。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral
*)p advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
// 同一機種が周囲に複数あるとき、自分がもっているものだけに接続するには、UUIDが同じかを判定します。

パケット・データ 受信信号強度
// !!注意!! iOS6では、一度も接続したことがない装置のUUIDはnilになります。一度でも接続すればUUIDが

取れます。ここでは、一度は接続したことがある前提でUUIDを比較しています。
/*
CBUUID *targetUUID = [CBUUID UUIDWithString:@"00000000-0000-0000-2F0C-F0289947EA35"];
if(peripheral.UUID == nil || ! [[CBUUID UUIDWithCFUUID:peripheral.UUID].data
isEqualToData:targetUUID.data]) return;
*/
NSString *localName = [advertisementData
objectForKey:CBAdvertisementDataLocalNameKey];
if(localName != nil && [localName isEqualToString:kTargetDeviceName] ) {
PeripheralContainer *c = [[PeripheralContainer alloc] init];
c.peripheral = p;
c.RSSI = RSSI;
[self findPeripheral:c];
}
}

KeyFobController.m 318行
アドバタイズメントで取れる情報 (1/1)
•

名前、送信電力
•

CBAdvertisementDataLocalNameKey

•

CBAdvertisementDataTxPowerLevelKey

•

これらの情報はiPhoneにキャッシュされない

•

送信電力とRSSIから距離概算

•

iBeaconの情報はフィルタリングされて取れない
アドバタイズメントで取れる情報 (2/2)
•

CBPeripheral インスタンス
•
•

一度でも接続したことがあれば nil

•
•

identifier : 128-bitの識別番号 (NSUUIDクラス)

同じ機器でもiPhoneごとに異なる

RSSI : 受信信号強度
•

•

接続してreadRSSI:を呼び出せば nil

切断しても同じidentifierを指定して再接続
接続と切断
-(void)connect:(PeripheralContainer *)c {
//ターゲットを発見、接続します
//この時点でperipheralはcentral managerに保持されていません。

必ずretain

//少なくとも接続が完了するまでの間、peripheralをアプリ側で保持します。

//接続処理はタイムアウトしません。接続に失敗すれば centralManager:didFailToConnectPeripheral:error

//接続処理を中止するには、peripheralを開放するか、明示的に cancelPeripheralConnection を呼び出します

!

self.peripheral = c.peripheral;
[_centralManager connectPeripheral:self.peripheral options:nil];

}
-(void)disconnect {
// 切断処理をします。_peripheralをnilにするなどの、切断完了後処理は、
// centralManager:didDisconnectPeripheral:error:
// で行います。
[_centralManager cancelPeripheralConnection:self.peripheral];
}

- (void)centralManager:(CBCentralManager *)central
didConnectPeripheral:(CBPeripheral *)p;
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:
(CBPeripheral *)peripheral error:(NSError *)error;

KeyFobController.m 256行

delegateで通知
!

サービスとキャラクタリスティクス
プロトコルスタック
Applications
Applications
Applications
Core Bluetooth

BTserver
GATT
ATT
L2CAP

PHY

GATT: Generic Attribute Profile

•

Link Layer

•

ATT: Attribute Protocol

•

L2CAP: Logical Link Control and Adaptation
Protocol
プロトコルスタック
サービス = クラス	


Applications
Applications
Applications
Core Bluetooth

キャラクタリスティクス = プロパティ
•

BTserver

キャラクタリスティクス
•

制御/動作指定

•

センサー値/外界の状態

•

(装置の)動作状態/内部状態

GATT
ATT
L2CAP

PHY

GATT: Generic Attribute Profile

•

Link Layer

•

ATT: Attribute Protocol

•

L2CAP: Logical Link Control and Adaptation
Protocol
サービスとプロファイル(振る舞い)
ユースケース

ハード仕様

デバイス発見
Find ME	

Profile

Proximity	

Profile	


切断時の警告

Immediate	

Alert Service	


振動やブザー	

を出力

Tx Power
Service	


送信電力	

の値

Link Loss	

Alert Service	


切断時の	

振る舞い指定

http://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.find_me.xml
サービスとキャラクタリスティクスを
見てみる
http://goo.gl/oYjrc
• UUIDで識別	

• 16-bit / 128-bit	

• 読み(read)/書き(write)/通知(notify)
!

サービスとキャラクタリスティクス	

の取得
#define kImmediateAlertServiceUUID @"1802"
#define kLinkLossServiceUUID
@"1803"
#define kAlertLevelUUID
@"2A06"
...
_linkLossServiceUUID
= [CBUUID UUIDWithString:kLinkLossServiceUUID];
_immediateAlertServiceUUID = [CBUUID UUIDWithString:kImmediateAlertServiceUUID];
_alertLevelUUID
= [CBUUID UUIDWithString:kAlertLevelUUID];

KeyFobController.m 104行
// 接続
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)p {
// サービスを探します
self.peripheral.delegate = self;
[p discoverServices:[NSArray arrayWithObjects:
_linkLossServiceUUID,
_immediateAlertServiceUUID,
_txPowerServiceUUID,
_batteryLevelServiceUUID,
nil]];
}

KeyFobController.m 343行
//発見したサービスに対して、Characteristicsを探します
- (void)peripheral:(CBPeripheral *)p didDiscoverServices:(NSError *)error {
for (CBService *service in p.services) {
if ([service.UUID.data isEqualToData:_linkLossServiceUUID.data]) {
[p discoverCharacteristics:[NSArray arrayWithObjects:
_alertLevelUUID,
nil]
forService:service];
} else if ([service.UUID.data isEqualToData:_immediateAlertServiceUUID.data]) {
[p discoverCharacteristics:[NSArray arrayWithObjects:
_alertLevelUUID,
nil]
forService:service];

KeyFobController.m 367行
- (void)peripheral:(CBPeripheral *)p didDiscoverCharacteristicsForService:(CBService
*)service error:(NSError *)error
{
if ([service.UUID.data isEqualToData:_batteryLevelServiceUUID.data]) {
_batteryLevelCharacteristics = [self findCharacteristics:service.characteristics
uuid:_batteryLevelUUID];
_batteryLevelSwitchCharacteristics = [self
findCharacteristics:service.characteristics uuid:_batteryLevelSwitchUUID];
[p setNotifyValue:YES forCharacteristic:_batteryLevelSwitchCharacteristics];
[p readValueForCharacteristic:_batteryLevelCharacteristics];
[p readValueForCharacteristic:_batteryLevelSwitchCharacteristics];
}
}

KeyFobController.m 396行
キャラクタリスティクス
の読み書き
KeyFobController.m 410行

KeyFobController.m 429行
KeyFobController.m 241行
KeyFobController.m 419行
バックグラウンド動作
•

ペリフェラルのスキャン
•
•

•

頻度が下がる∼12分に1回くらい
他のアプリがスキャンすると、ついでに通知

アプリケーションの呼び出し
•

ノーティフィケーション/インディケーション
WF-BTLE
https://www.facebook.com/groups/
563064710384459/
ありがとうございました。
参考情報
Appleからの情報

• https://developer.apple.com/videos/wwdc/
2012/	


• Session 703: Core Bluetooth 101	

• Session 705 Advanced Core Bluetooth	


• Apple Bluetooth Mailing list	

• https://lists.apple.com/mailman/listinfo/
bluetooth-dev
書籍
•
•
•
•

AppleのBluetoothアクセサリ設計指針	

Bluetooth Low Energy Handbook	


•

http://www.amazon.co.jp/Bluetooth-Low-EnergyDevelopers-ebook/dp/B009XDA1G8/	


Building iPhone and iPad Electronic Projects	


•

http://shop.oreilly.com/product/0636920029281.do	


Bluetooth4 Core Specificaiton (辞書的に)
半導体、モジュール
•

Texus Instruments社	


•
•
•
•
•

http://www.tij.co.jp/product/jp/cc2540	

http://processors.wiki.ti.com/index.php/
Category:BluetoothLE?DCMP=blestack&HQS=ble-wiki	

フォーラム	


Nordic Semiconductor社	


•

https://www.nordicsemi.com	


BlueGiga	


•

http://www.bluegiga.com
サービス、動向
• Facebook BTLEグループ	

• https://www.facebook.com/groups/
563064710384459/	


• Kickstarter ?	

• http://www.kickstarter.com/discover/
recently-launched
iBeaconアプリのインストール
•

ソースコード
•
•

•

https://db.tt/S0Wp3U8q (Dropbox zip形式)
http://goo.gl/8DqaVK (Github)

インストール
•

•

iBeacon/simpleBeacon.xcodeproj

Xcode5でシミュレータのBLEサポートなくなる
メソッド呼び出しのダンプ

ビーコン(発信)

ビーコンの受信

Bluetooth LE
のアドバタイズメント
のダンプ
• ReginをON	

• 位置の利用を許可	

• RangingをON	

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

!

ビーコンの受信

• ビーコン:UUID/Major/Minor	

• Proximity:おおよその距離	

• RSSI 受信信号(対数 dBm)	

• Accuracy:だいたいの精度(m)
パスを入手は、パスのリンク先
ビーコンのSWで、ビーコン発信

ビーコン(発信)
• Bluetooth LEの生パケットを表示
します。	


• ビーコンの情報はiOSにフィルタ

されるので、ここには出ません。	


• iOSのビーコンは30ミリ秒ごとに

送信されます。すべてのパケット
が受信されるわけではありません。

Bluetooth LE
のアドバタイズメント
のダンプ
ログファイルはiTunesのファイル共有で落とします。
バックグラウンド動作のログをとるための機能です。
Passbookのデモ
Passbookの入手(1/2)
パス発行URL	


https://pass.is/1B7fvaX1VrrZMqn
Passbookの入手(2/2)
表示確認
位置アイコンが表示されます

More Related Content

What's hot

IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCaIC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
Isao Soma
 

What's hot (20)

GoでサブGHz帯通信
GoでサブGHz帯通信GoでサブGHz帯通信
GoでサブGHz帯通信
 
Simple IoT BoardでIoT
Simple IoT BoardでIoTSimple IoT BoardでIoT
Simple IoT BoardでIoT
 
Wio LTE(Seeed社)が簡単だということでやってみたけれどもいろいろありました
Wio LTE(Seeed社)が簡単だということでやってみたけれどもいろいろありましたWio LTE(Seeed社)が簡単だということでやってみたけれどもいろいろありました
Wio LTE(Seeed社)が簡単だということでやってみたけれどもいろいろありました
 
IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCaIC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
IC CARD WORLD 2011 - Sony Android tablet & NFC/FeliCa
 
流通/小売業向け Windows ストア アプリ 開発セミナー資料
流通/小売業向け  Windows ストア アプリ 開発セミナー資料流通/小売業向け  Windows ストア アプリ 開発セミナー資料
流通/小売業向け Windows ストア アプリ 開発セミナー資料
 
iBeacon Applications
iBeacon ApplicationsiBeacon Applications
iBeacon Applications
 
mbedでIoTデバイス
mbedでIoTデバイスmbedでIoTデバイス
mbedでIoTデバイス
 
ReNCoN_V0.6
ReNCoN_V0.6ReNCoN_V0.6
ReNCoN_V0.6
 
Hw meetup 20150304
Hw meetup 20150304Hw meetup 20150304
Hw meetup 20150304
 
Swiftビギナーズ勉強会_第26回_発表資料
Swiftビギナーズ勉強会_第26回_発表資料Swiftビギナーズ勉強会_第26回_発表資料
Swiftビギナーズ勉強会_第26回_発表資料
 
Hardware meetup
Hardware meetupHardware meetup
Hardware meetup
 
はじめようRaspberry Piでハイレゾオーディオ再生
はじめようRaspberry Piでハイレゾオーディオ再生はじめようRaspberry Piでハイレゾオーディオ再生
はじめようRaspberry Piでハイレゾオーディオ再生
 
Nfc単語帳 つくりました
Nfc単語帳 つくりましたNfc単語帳 つくりました
Nfc単語帳 つくりました
 
ReNCoN_v0.6
ReNCoN_v0.6ReNCoN_v0.6
ReNCoN_v0.6
 
Napter で簡単リモート操作のデモ | SORACOM UG 九州 #10
Napter で簡単リモート操作のデモ | SORACOM UG 九州 #10Napter で簡単リモート操作のデモ | SORACOM UG 九州 #10
Napter で簡単リモート操作のデモ | SORACOM UG 九州 #10
 
IoTゲームの難易度雑感
IoTゲームの難易度雑感IoTゲームの難易度雑感
IoTゲームの難易度雑感
 
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
 
はじめよう、ラズパイオーディオ 210306
はじめよう、ラズパイオーディオ 210306はじめよう、ラズパイオーディオ 210306
はじめよう、ラズパイオーディオ 210306
 
5分で分かるRaspberry Piでハイレゾオーディオ再生
5分で分かるRaspberry Piでハイレゾオーディオ再生5分で分かるRaspberry Piでハイレゾオーディオ再生
5分で分かるRaspberry Piでハイレゾオーディオ再生
 
Simple IoT BoardでIoT
Simple IoT BoardでIoTSimple IoT BoardでIoT
Simple IoT BoardでIoT
 

Similar to iOS7でのBluetooth LE活用 @ MOSA Software Meeting 2013

Lucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-finalLucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-final
PacSecJP
 
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
CODE BLUE
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
skudoh
 

Similar to iOS7でのBluetooth LE活用 @ MOSA Software Meeting 2013 (20)

iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
 
【ヒカ☆ラボ】あなたのMacがあっという間にBeacon端末に変身!~2015年必ずクル「iBeacon」を1から10まで~
【ヒカ☆ラボ】あなたのMacがあっという間にBeacon端末に変身!~2015年必ずクル「iBeacon」を1から10まで~【ヒカ☆ラボ】あなたのMacがあっという間にBeacon端末に変身!~2015年必ずクル「iBeacon」を1から10まで~
【ヒカ☆ラボ】あなたのMacがあっという間にBeacon端末に変身!~2015年必ずクル「iBeacon」を1から10まで~
 
Lucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-finalLucas apa pacsec_slides_jp-final
Lucas apa pacsec_slides_jp-final
 
楽しいロリコン
楽しいロリコン楽しいロリコン
楽しいロリコン
 
iBeacon を利用したサービス開発のポイント
iBeacon を利用したサービス開発のポイントiBeacon を利用したサービス開発のポイント
iBeacon を利用したサービス開発のポイント
 
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
 
iBeaconを身近に!アプリ開発の基礎とポイント
iBeaconを身近に!アプリ開発の基礎とポイントiBeaconを身近に!アプリ開発の基礎とポイント
iBeaconを身近に!アプリ開発の基礎とポイント
 
NEDO講座 MoveIt! チュートリアル 第1部
NEDO講座 MoveIt! チュートリアル 第1部NEDO講座 MoveIt! チュートリアル 第1部
NEDO講座 MoveIt! チュートリアル 第1部
 
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [...
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
【jena X IBM】ビーコンを活用した働き方改革とは?
 【jena X IBM】ビーコンを活用した働き方改革とは? 【jena X IBM】ビーコンを活用した働き方改革とは?
【jena X IBM】ビーコンを活用した働き方改革とは?
 
プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛
 
Node-REDのロードマップや見どころ
Node-REDのロードマップや見どころNode-REDのロードマップや見どころ
Node-REDのロードマップや見どころ
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
SigfoxではじめるIoT勉強会
SigfoxではじめるIoT勉強会SigfoxではじめるIoT勉強会
SigfoxではじめるIoT勉強会
 
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
 
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
 
mbedとwindows 8.1
mbedとwindows 8.1mbedとwindows 8.1
mbedとwindows 8.1
 

More from akihiro uehara

第4回目大垣iBeaconハッカソン
第4回目大垣iBeaconハッカソン第4回目大垣iBeaconハッカソン
第4回目大垣iBeaconハッカソン
akihiro uehara
 
20130902 btleハンズオンワークショップ
20130902 btleハンズオンワークショップ20130902 btleハンズオンワークショップ
20130902 btleハンズオンワークショップ
akihiro uehara
 
20120216 デブサミ 座談会
20120216 デブサミ 座談会20120216 デブサミ 座談会
20120216 デブサミ 座談会
akihiro uehara
 
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
akihiro uehara
 

More from akihiro uehara (19)

雑談2017
雑談2017雑談2017
雑談2017
 
20160608 iotセミナー
20160608 iotセミナー20160608 iotセミナー
20160608 iotセミナー
 
人もモノである視点から見えてくる世界
人もモノである視点から見えてくる世界人もモノである視点から見えてくる世界
人もモノである視点から見えてくる世界
 
Wwdc2015 ios9あれこれ
Wwdc2015 ios9あれこれWwdc2015 ios9あれこれ
Wwdc2015 ios9あれこれ
 
20140806 i beacon講演_愛知工業大学
20140806 i beacon講演_愛知工業大学20140806 i beacon講演_愛知工業大学
20140806 i beacon講演_愛知工業大学
 
第4回目大垣iBeaconハッカソン
第4回目大垣iBeaconハッカソン第4回目大垣iBeaconハッカソン
第4回目大垣iBeaconハッカソン
 
2014年3月8日 スマートフォン勉強会 プレゼン資料
2014年3月8日 スマートフォン勉強会 プレゼン資料2014年3月8日 スマートフォン勉強会 プレゼン資料
2014年3月8日 スマートフォン勉強会 プレゼン資料
 
2014年2月26日第3回iBeaconハッカソン~バス編~
2014年2月26日第3回iBeaconハッカソン~バス編~2014年2月26日第3回iBeaconハッカソン~バス編~
2014年2月26日第3回iBeaconハッカソン~バス編~
 
20140129 i beaconハッカソン
20140129 i beaconハッカソン20140129 i beaconハッカソン
20140129 i beaconハッカソン
 
20131217 i beaconハッカソン
20131217 i beaconハッカソン20131217 i beaconハッカソン
20131217 i beaconハッカソン
 
20130902 btleハンズオンワークショップ
20130902 btleハンズオンワークショップ20130902 btleハンズオンワークショップ
20130902 btleハンズオンワークショップ
 
20130601 btleハンズオンワークショップ
20130601 btleハンズオンワークショップ20130601 btleハンズオンワークショップ
20130601 btleハンズオンワークショップ
 
iOSアプリ開発者のための Bluetooth Low Energy体験講座
iOSアプリ開発者のための Bluetooth Low Energy体験講座iOSアプリ開発者のための Bluetooth Low Energy体験講座
iOSアプリ開発者のための Bluetooth Low Energy体験講座
 
20120216 デブサミ 座談会
20120216 デブサミ 座談会20120216 デブサミ 座談会
20120216 デブサミ 座談会
 
MY LIFE AS A KIGURUMI
MY LIFE AS A KIGURUMIMY LIFE AS A KIGURUMI
MY LIFE AS A KIGURUMI
 
Ot oduino i_phoneアクセプレゼンpart2
Ot oduino i_phoneアクセプレゼンpart2Ot oduino i_phoneアクセプレゼンpart2
Ot oduino i_phoneアクセプレゼンpart2
 
OTOduino_iPhoneアクセサリ開発_ギークラボ6月28日_プレゼン
OTOduino_iPhoneアクセサリ開発_ギークラボ6月28日_プレゼンOTOduino_iPhoneアクセサリ開発_ギークラボ6月28日_プレゼン
OTOduino_iPhoneアクセサリ開発_ギークラボ6月28日_プレゼン
 
未踏2次 iPhoneソフトウェアモデム開発プロジェクト
未踏2次 iPhoneソフトウェアモデム開発プロジェクト未踏2次 iPhoneソフトウェアモデム開発プロジェクト
未踏2次 iPhoneソフトウェアモデム開発プロジェクト
 
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
20100701 01 ツイッター浜名湖_プレゼン_i_phoneで動くロボットセミナー
 

iOS7でのBluetooth LE活用 @ MOSA Software Meeting 2013