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

24,095 views
23,823 views

Published on

2013年11月29日MOSAでのセミナー資料。

Published in: Technology
0 Comments
34 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
24,095
On SlideShare
0
From Embeds
0
Number of Embeds
13,574
Actions
Shares
0
Downloads
133
Comments
0
Likes
34
Embeds 0
No embeds

No notes for slide

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

  1. 1. iOS7におけるBluetooth LEの活用法 ! MOSA Software Meeting 2013 11月29日 ! (合)わふう 上原 昭宏
  2. 2. 目次 • Bluetooth Low Energyとは • iOS7でのBluetooth LE利用 • • iBeacon サービスとハードウェアとアプリケーション開発 • ハードウェア、ガジェット • iOSアプリケーション
  3. 3. Bluetooth Low Energy • 超低消費電力無線通信 • コイン型電池1つで年単位の無線通信 • 電池交換不要、使い捨て、低コスト • ウェアブル、スマートフォン向き • Bluetooth 3.0とは物理層から異なる技術 • 通信距離 最大 ∼ 50m • 低頻度(1秒に1 10回)、少量のデータ(20バイト)
  4. 4. 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
  5. 5. 接続の後方互換性 Bluetooth Smart は3.0までの機器とはつながらない Bluetooth 4.0 Ver 3.0 までの技術 デュアルモード・デバイス (iPhoneやPC) Low Energy シングルモード・デバイス (周辺機器)
  6. 6. よくある質問 • 略称は? • • 超低消費電力で音声を送りたい • • Bluetooth Low Energy、BLE、Bluetooth Smart Bluetooth3.0を使ってください すれ違い、ファイル交換に使いたい • iOSアプリ間の通信速度は3 10kビット/秒程度 https://itunes.apple.com/sr/app/bluespeed/id579118786?mt=8
  7. 7. iOSとBluetooth LE
  8. 8. iOSとBLE 2011年 • • 2013年 iPhone4s iOS5 • 2012年 iPhone5 iOS6 iPhone5s iOS7 世界初のBT4 MFiなしに
 一般開発者に解放 ハードとつながる
 アプリが作れる • 周辺機器相当
 • 端末の買い替え周期 (ペリフェラル)
 になれる • 周辺機器サポート • 独自のサービス展開
  9. 9. iOS7のBluetooth LE利用 • iOS7から、iOSがBluetooth LEを利用する • 周辺機器のサポート • キーボード: HID Over GATT Profile (HOGP) • ゲームコントローラ:独自、MFiで提供 • iBeacon • Apple Notification Center Service
  10. 10. iBeacon
  11. 11. iBeaconってなに? • Bluetooth LEを利用した、領域と近接検出 • イメージ的に独自のGPS発信機を設置できる感じ • 128­bitの識別子、16ビットのmajor/minor番号 • 1企業1UUID、店舗、店舗内位置 • ビーコン電波検出、による位置イベントのトリガー • Paypal Beaconは別物の決済用途でしょうが…
  12. 12. iOSアプリとiBeacon • CoreLocationフレームワークに統合 • ビーコンを受信するiOSアプリケーション • • • フォアグラウンド: 領域検出とレンジング バックグラウンド: 領域検出 iOSアプリからの、ビーコンの送信 • • フォアグラウンドでのみ 範囲は∼30m程度、送信電力を絞れば∼1mなども
  13. 13. PassbookとiBeacon • ロック画面の表示タイミング • • ビーコンに一致したパスがあれば • • ビーコン信号をチェック ロック画面に表示 会員カード、支払いタイミング…
  14. 14. Ad ペリフェラル 受信 セントラル • Ad 接続 処理 デバイス発見の仕組み利用 • • Ad • Ad Ad Ad BLE規格に準拠 Androidでの実装もできる 距離推定は受信電波の強さで • • すごく近い、近い、遠い 放射パターンをいじれば • お店の入り口、ショーウイン ドウごとのアクション
  15. 15. パケットをスニッフィング http://www.ti.com/tool/cc2540emk-usb http://www.tij.co.jp/tool/jp/packet-sniffer
  16. 16. フラグ • 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)
  17. 17. 製造者固有のデータ ! • • 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
  18. 18. iBeacon+iOSアプリ
  19. 19. iBeaconの資料 • サンプルソースコード • https://github.com/reinforce-lab/ CoreBluetooth_samples • スライド • http://www.slideshare.net/reinforcelab/ • 解説(ブログ記事) • http://reinforce-lab.github.io/blog/2013/10/21/ibeacon/
  20. 20. iOSアプリケーション • CoreLocationフレームワークに統合 • • 動作は実機のみ、シミュレータは使えない アプリができること • 受信、領域監視と距離推定 • 発信、ビーコン
  21. 21. リージョン監視のフロー 1. ハードウェアのサポートを調べる 2. 領域監視対象の指定と通知を受け取るタイミング指定 3. 監視の開始/停止と通知の取得 変更
  22. 22. リージョン監視のフロー 1. ハードウェアのサポートを調べる [CLLocationManager isMonitoringAvailableForClass: [CLBeaconRegion class]] iOS7対応機種のうち、 iPhone4だけは、Bluetooth LE非対応なので、 ハードウェアサポートされない 変更
  23. 23. リージョン監視のフロー 2. 領域監視対象の指定と通知を受け取るタイミング指定 CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:kBeaconUUID] identifier:@ identifier ]; ! CLBeaconRegionクラス BOOL notifyOnEntry : 領域 in, デフォルト YES BOOL notifyOnExit : 領域 exit, デフォルト YES BOOL notifyEntryStateOnDisplay : 画面表示時, デフォルト NO 変更
  24. 24. リージョン監視のフロー 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:
  25. 25. リージョン監視(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:
  26. 26. リージョン監視(2/2) • notifyEntryStateOnDisplayがYES • 領域のチェック・タイミング • メソッドを呼び出した時、画面が表示された時に領域確認 • • デリゲート呼び出しが複数回くる → アプリでチェック バックグラウンド動作 • iOSが、terminated から backgroundに遷移遷移 • ユーザがタスクスイッチャーから削除しない限り
  27. 27. バックグラウンド • バックグラウンド・モード • • • 領域に入る/出ると通知 (10秒の処理時間) レンジングはできない 電力消費量 • • • 領域in/exit iPhone4s 1日で50%, iPhone5は電池を消費しない (7.0.2) notifyEntryStateOnDisplayでは、iPhone4sでも電池は減らない 領域監視の起動/停止 • 地理的な領域監視 (最も荒いモードで) • Passbookとのアプリ連携、アプリがフォアグラウンド
  28. 28. レンジング • 監視対象 • UUIDを指定、major/minorも指定可能 • 1秒ごとに、検出したビーコンの情報を通知 • 同じビーコンでも、1秒後のインスタンスは別物 • 距離は電波強度で推定 • とても近い、近い、遠いの3種類
  29. 29. レンジングのコード DetectorViewController.m
  30. 30. start/stopの呼び出し順番 • リージョン監視をONのちレンジングをON (7.0.4) • リージョン監視の開始 → (リージョンに入る) → レン ジングの開始 → リージョン監視の停止 → レンジング の停止 • レンジングの通知が止まらない • リージョン監視の開始 → (リージョンに入る) → レ ンジングの開始 → レンジングの停止 → リージョン 監視の停止
  31. 31. ビーコンの送信 • CoreBluetoothフレームワークを使う • パケットのデータは、CLBeaconRegionで生成 • ビーコンの送信は、アプリケーションがフォアグラ ウンドにあるときのみ • OS Xでも、ビーコンの送信ができる
  32. 32. PassbookとiBeacon • Passbook Package Format Reference • https://developer.apple.com/library/ios/documentation/UserExperience/ Reference/PassKit_Bundle/Chapters/Introduction.html • iOS7から • 指定項目 • UUID/major/minor • ロック画面表示名 • いくつでも指定可能
  33. 33. iBeaconのよくある質問 • AndroidでのiBeaconの検出? • • 決済はどうするのか? • • アプリケーションで各自実装 チート対策は? • • 独自に実装可能(API Level: 18. Android 4.3) 簡単にコピー可能 AppleはiBeaconをクローズしないか? • 公式に仕様を公開してはいない
  34. 34. iBeaconの代替手段 • 独自に、iBeacon相当の機能は、実装可能 • • CoreBluetoothフレームワーク Appleにしかできないこと • バックグラウンド動作 • Passbookの連携
  35. 35. iBeaconの取り組み • 役割と立場 • • • サービスの企画、運営が権限をもつのがいい アプリケーション、ウェブ開発、ビーコン設置 実施期間 • • まず短期間でテスト、のち常設 本音と建前 • • 要は、ストーキング。プレミアムな顧客来店検出、動線検出 • • クーポン発行、お客様に合わせた…、ネットからリアルに… 個人情報と統計データの扱い、JRの二の舞い… iOS7.1β… 変更
  36. 36. ハードウェア http://estimote.com https://www.sticknfind.com
  37. 37. Apple Notification Center Service ! ANCS
  38. 38. ANCSとは • iOSの通知をBLEデバイスに伝える汎用の仕組み • イベント通知と、詳細情報の読み出しを提供 • 電話やメール着信、位置変化、ファイナンス… • 意味付けは拡張/変更どんどんありそう • あきらかにiWatch自社向け開発…
  39. 39. 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/
  40. 40. ANCSの試作 • 通知を受け取るiOS7アプリケーションは作れない • • ANCS関連の通信はiOSが握る 周辺機器の試作 • いきなりカスタムハードは辛い、iOSで試作 • iOS7はiOSが管轄、アプリはさわれない • iOS6なら触れる、これで試作するのがいい
  41. 41. アプセサリ (Appcessory) Application + Accessory
  42. 42. http://www.fitbit.com/jp
  43. 43. Appcessoryの粗利益 • 販売管理等 粗利益 工場出荷価格 この数値は、根拠のない例です • 販売価格 10,000円 • 50% 30% • 仮に、粗利益20%として • 20% 年2000円のウェブサービス 買い替え動機 • 破損、水没 • 新モデル
  44. 44. ハードウェア プロトタイピング
  45. 45. http://getpebble.com http://www.lumoback.com http://www.kickstarter.com http://www.wahoofitness.com
  46. 46. http://www.haxlr8r.com pronounced Hackccelerator
  47. 47. プロトタイピング • iPhoneを利用する • • プロトタイピングに使えるもの • • 加速度、ジャイロ… SensorTag, Konashi, RFduino 一般に見せるときに注意すること • 電波法の技術基準適合証明 • Bluetoothの認証は、試作中は不要
  48. 48. http://goo.gl/d3HUL
  49. 49. TI Sensor tag http://www.ti.com/tool/ cc2541dk-sensor IR temperature Sensor Humidity Sensor Pressure Sensor Accelerometer Gyroscope Magnetometer
  50. 50. Konashi http://konashi.ux-xu.com
  51. 51. RFduino http://www.rfduino.com
  52. 52. モジュール • RF回路部分を小さな基板にまとめたもの • 各種の認証を取得済 • 電波法 (各国ごとに1万ドルくらい) • Bluetooth 製品登録 (1万ドルくらい) • • • 500円玉に乗るサイズ 内部のマイコンでユーザ・アプリが動く 開発用キット • ∼500ドル http://www.bluegiga.com/ BLE112_Bluetooth_Smart_module
  53. 53. オリジナル機器の開発 • 発注者がだれか? • • 企画に権限がよい (iBeaconのように) 担当分野をどこで切るか • • • ハードウェア+ドライバ 挙動 = ハード 通信 iOS(BTserver) トラブルに備える (納品後にiOSの振舞いが変化) • デモアプリ(動作確認、検証)が大事
  54. 54. CoreBlutooth フレームワーク • 通信手順を抽象化 • 発見 • 接続 / 切断 • 読み書き, 通知 • バックグラウンド動作 • 実機でのみ動作, シミュレータは使えない
  55. 55. ネットワーク・トポロジ • スター型 • • 接続数の上限がない • • 1つのセントラルと多数のペリフェ ラル iPhoneの同時接続は10 パケットの中継機能はない セントラル (Central) ペリフェラル (Peripheral) ✗
  56. 56. ペリフェラルの発見 • • Ad Ad 20ミリ秒 1.3秒周期 • Ad パケットを送信 • Ad アドバタイズメント デバイス名などの情報
  57. 57. 適応周波数ホッピング
  58. 58. 適応周波数ホッピング
  59. 59. 適応周波数ホッピング
  60. 60. Bluetooth LEの振る舞い • iOSアプリケーションが接続と切断をにぎる • ユーザはゼロ設定、アプリで設定 (WiFiの場合…) • すぐ見つかる(∼20ミリ秒)、すぐつながる(数秒) • ペアリングは、ペリフェラルの設計次第 • • Bluetoothの機器一覧表示 • • 無入力、ユーザのコード入力 共有 を保存した機器のみ表示 目の前のクリスマスツリーが、自分のスマフォで… • すれ違いてきな振る舞いで、展示物が…
  61. 61. iOS アプリケーション Centralについて ソースコード: https://github.com/reinforce-lab/CoreBluetooth_samples/tree/master/ BSHSBTPT01_samples
  62. 62. 実装の手順 • @import CoreBluetooth • CBCentralManagerDelegate • CBPeripheralDelegate CBCentralManager セントラル (Central) ペリフェラル (Peripheral) CBPeripheral 変更
  63. 63. CBCentralManagerのインスタンス • CBCentralManager initWithDelegate:queue:options: • オプション • CBCentralManagerOptionShowPowerAlertKey; • • • Bluetooth OFFのときダイアログ表示? デフォルトNO CBCentralManagerOptionRestoreIdentifierKey; • インスタンスの識別文字列
  64. 64. Bluetoothの状態変化 • centralManagerDidUpdateState: • CBCentralManagerStatePoweredOff • CBCentralManagerStatePoweredOn • CBCentralManagerStateUnauthorized • CBCentralManagerStateUnsupported 変更
  65. 65. デバイスの発見 • CBCentralManager, scanForPeripheralsWithServices:options: • サービス • • ペリフェラルのサービスを指定 オプション • CBCentralManagerScanOptionAllowDuplicatesKey • ペリフェラルの発見を重複して通知するか • デフォルト、NO 変更
  66. 66. // デバイスの発見時処理を行います。 // スキャンで指定したサービスがあるデバイスのみが通知されますが、同じような機能を持った対象外の装置を発見す るかもしれません。 // アドバタイズメント・パケットに含まれる情報は、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行
  67. 67. アドバタイズメントで取れる情報 (1/1) • 名前、送信電力 • CBAdvertisementDataLocalNameKey • CBAdvertisementDataTxPowerLevelKey • これらの情報はiPhoneにキャッシュされない • 送信電力とRSSIから距離概算 • iBeaconの情報はフィルタリングされて取れない
  68. 68. アドバタイズメントで取れる情報 (2/2) • CBPeripheral インスタンス • • 一度でも接続したことがあれば nil • • identifier : 128-bitの識別番号 (NSUUIDクラス) 同じ機器でもiPhoneごとに異なる RSSI : 受信信号強度 • • 接続してreadRSSI:を呼び出せば nil 切断しても同じidentifierを指定して再接続
  69. 69. 接続と切断
  70. 70. -(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で通知
  71. 71. ! サービスとキャラクタリスティクス
  72. 72. プロトコルスタック 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
  73. 73. プロトコルスタック サービス = クラス 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
  74. 74. サービスとプロファイル(振る舞い) ユースケース ハード仕様 デバイス発見 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
  75. 75. サービスとキャラクタリスティクスを 見てみる
  76. 76. http://goo.gl/oYjrc
  77. 77. • UUIDで識別 • 16-bit / 128-bit • 読み(read)/書き(write)/通知(notify)
  78. 78. ! サービスとキャラクタリスティクス の取得
  79. 79. #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行
  80. 80. //発見したサービスに対して、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行
  81. 81. キャラクタリスティクス の読み書き
  82. 82. KeyFobController.m 410行 KeyFobController.m 429行
  83. 83. KeyFobController.m 241行 KeyFobController.m 419行
  84. 84. バックグラウンド動作 • ペリフェラルのスキャン • • • 頻度が下がる∼12分に1回くらい 他のアプリがスキャンすると、ついでに通知 アプリケーションの呼び出し • ノーティフィケーション/インディケーション
  85. 85. WF-BTLE https://www.facebook.com/groups/ 563064710384459/
  86. 86. ありがとうございました。
  87. 87. 参考情報
  88. 88. 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
  89. 89. 書籍 • • • • 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 (辞書的に)
  90. 90. 半導体、モジュール • 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
  91. 91. サービス、動向 • Facebook BTLEグループ • https://www.facebook.com/groups/ 563064710384459/ • Kickstarter ? • http://www.kickstarter.com/discover/ recently-launched
  92. 92. iBeaconアプリのインストール • ソースコード • • • https://db.tt/S0Wp3U8q (Dropbox zip形式) http://goo.gl/8DqaVK (Github) インストール • • iBeacon/simpleBeacon.xcodeproj Xcode5でシミュレータのBLEサポートなくなる
  93. 93. メソッド呼び出しのダンプ ビーコン(発信) ビーコンの受信 Bluetooth LE のアドバタイズメント のダンプ
  94. 94. • ReginをON • 位置の利用を許可 • RangingをON • どなたか、ビーコン発信? ! ビーコンの受信 • ビーコン:UUID/Major/Minor • Proximity:おおよその距離 • RSSI 受信信号(対数 dBm) • Accuracy:だいたいの精度(m)
  95. 95. パスを入手は、パスのリンク先 ビーコンのSWで、ビーコン発信 ビーコン(発信)
  96. 96. • Bluetooth LEの生パケットを表示 します。 • ビーコンの情報はiOSにフィルタ されるので、ここには出ません。 • iOSのビーコンは30ミリ秒ごとに 送信されます。すべてのパケット が受信されるわけではありません。 Bluetooth LE のアドバタイズメント のダンプ
  97. 97. ログファイルはiTunesのファイル共有で落とします。 バックグラウンド動作のログをとるための機能です。
  98. 98. Passbookのデモ
  99. 99. Passbookの入手(1/2) パス発行URL https://pass.is/1B7fvaX1VrrZMqn
  100. 100. Passbookの入手(2/2)
  101. 101. 表示確認 位置アイコンが表示されます

×