iBeacon #yidev

15,433 views

Published on

yidev第十四回勉強会で発表した、iBeaconの基本と、その背後にある技術の解説資料です。詳細のTranscriptは後日blogで公開を予定しています。

Published in: Technology, Education

iBeacon #yidev

  1. 1. iBeacon @nolili #yidev
  2. 2. http://gigazine.net/news/20130911-ibeacon/
  3. 3. 次世代の! 無線通信技術
  4. 4. _人人 人人_
 > 結局何だ<
  ̄Y^Y^Y^Y ̄
  5. 5. 3行でまとめると
  6. 6. Bluetooth LEを使用した! マイクロ・ロケーションサービス! (iOSのサポートつき)
  7. 7. ID 200 ID 300 ID 100
  8. 8. UUID UUID UUID
  9. 9. UUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE
  10. 10. RegionMonitoring Ranging Configure
  11. 11. RegionMonitoring 今いる場所はUUID xxxx のBeaconのエリア? Ranging UUID xxxx Beaconとの距離は? Configure そうだ、iPhoneをBeaconにしよう
  12. 12. RegionMonitoring 今いる場所はUUID xxxx のBeaconのエリア?
  13. 13. CLLocationManager -(void)startMonitoringForRegion:(CLRegion *)region
  14. 14. CLBeaconRegion - (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier; NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE
  15. 15. $ uuidgen 7A1275A4-78B1-4A18-888E-21F550CFB0FE
  16. 16. CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE didEnterRegion didExitRegion
  17. 17. CLLocationManager - (void)requestStateForRegion:(CLRegion *)region ! CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didDetermineState: (CLRegionState)state forRegion:(CLRegion *)region NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE CLRegionStateInside CLRegionStateOutside
  18. 18. ブロック 191D6287-2135-4538-97BF- AB1FFEB8-4020-43C2-9509- EB5F75E4-EF03-405F-A543- 会場B … 会場C … 会場D 横浜 会場B 会場A 東京 B5ECF8B9-01D7-4EAE-8D53-2486DA4 会場C 東北 UUID 会場A 北海道 会場 … 会場A … 会場A … 会場B … 93F62 E2FA04B8781A A6D4C514ADBA C930B53AB3D9
  19. 19. CLBeaconRegion - (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier; ! - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major identifier:(NSString *)identifier; ! - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major minor:(CLBeaconMinorValue)minor identifier:(NSString *)identifier; NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE CLBeaconMajorValue! CLBeaconMinorValue!
  20. 20. Proximity UUID Major Number Minor Number 会場A:0 北海道:0 会場B:1 会場C:2 iOS 勉強会 7A1275A4-78B1-4 A18-888E-21F550C FB0FE 会場A:0 東北:1 会場B:1 会場C:2 会場D:3 東京:2 横浜:3 会場A:0 会場A:0 会場B:1
  21. 21. Proximity UUID Major Number Minor Number 会場A:0 北海道:0 会場B:1 会場C:2 iOS 勉強会 7A1275A4-78B1-4 A18-888E-21F550C FB0FE 会場A:0 東北:1 会場B:1 会場C:2 会場D:3 東京:2 横浜:3 会場A:0 会場A:0 会場B:1
  22. 22. CLBeaconRegion - (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier; ! - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major identifier:(NSString *)identifier; ! - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major minor:(CLBeaconMinorValue)minor identifier:(NSString *)identifier; NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE CLBeaconMajorValue! 3 CLBeaconMinorValue! 1
  23. 23. Proximity UUID Major Number Minor Number 会場A:0 北海道:0 会場B:1 会場C:2 iOS 勉強会 7A1275A4-78B1-4 A18-888E-21F550C FB0FE 会場A:0 東北:1 会場B:1 会場C:2 会場D:3 東京:2 横浜:3 会場A:0 会場A:0 会場B:1
  24. 24. Ranging UUID xxxx Beaconとの距離は?
  25. 25. NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE CLBeaconMajorValue! 3 CLBeaconMinorValue! 1 iOS! Device
  26. 26. CLLocationManager - (void)startRangingBeaconsInRegion:(CLBeaconRegion *)region; - (void)stopRangingBeaconsInRegion:(CLBeaconRegion *)region; NSUUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE CLBeaconMajorValue! 3 CLBeaconMinorValue! 1 iOS! Device CLProximityUnknown,! CLProximityImmediate,! CLProximityNear,! CLProximityFar
  27. 27. CLLocationManager - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region CLBeacon NSUUID! 1275A4-78B1-4A18-888E-21F550CFB0FE CLBeaconMajorValue! 3 CLBeaconMinorValue! 1 proximityUUID! major! minor! proximity! accuracy! rssi!
  28. 28. CLLocationManager - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region CLBeacon ! typedef {! CLProximityUnknown,! CLProximityImmediate,! CLProximityNear,! CLProximityFar! } CLProximity;! proximityUUID! major! minor! proximity! accuracy! rssi!
  29. 29. Configure そうだ、iPhoneをBeaconにしよう
  30. 30. Estimoteうってない!どうしよう
  31. 31. iPhoneをビーコンにすればいいよね
  32. 32. CLBeaconRegion - (NSMutableDictionary *)peripheralDataWithMeasuredPower:(NSNumber *)measuredPower; ! CBPeripheralManager - (void)startAdvertising:(NSDictionary *)advertisementData; iOS! Device
  33. 33. NFCと! データ転送可能! 同様に決済機能 な範囲が広い 次世代の! 無線通信技術 iBeacon
  34. 34. Bluetooth LEを使用した! マイクロ・ロケーションサービス! (iOSのサポートつき)
  35. 35. 本プレゼンテーションは独立したものであり、Apple Inc.が認定、後援、その他承認したものではありません。! 本プレゼンテーションの内容は著者が独自に調査した結果を記したものです。! 社名、製品名、システム名などは一般に各社の商標または登録商標です。
  36. 36. おまけ
  37. 37. Passbook
  38. 38. https://developer.apple.com/library/ios/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/LowerLevel.html#//apple_ref/doc/uid/TP40012026-CH3-SW4
  39. 39. UUID! 7A1275A4-78B1-4A18-888E-21F550CFB0FE
  40. 40. HW specificationは見当たらないよ
  41. 41. Bluetooth 4.0 LE
  42. 42. Bluetooth 4.0! Low Energy HRセンサなど! ANT+に近い! Bluetooth 2.0,3.0! Classic キーボード・マウス! ヘッドセット 名前は似ているが別物 全部入りDualmodeのチップもあるよ
  43. 43. Bluetooth 4.0! Low Energy
  44. 44. Service, Device Name, UUID… Bluetooth 4.0! Low Energy
  45. 45. Bluetooth LE Advertisement Packet Scanner LE Advertisement Data Advertiser ADV_IND ADV_IND ADV_IND LE Advertisement Data ADV_IND ADV_IND ADV_IND
  46. 46. Preamble Advertisement Packet Advertising Access Address Header Payload Length AdvA Advertising Data! … CRC
  47. 47. Preamble Advertisement Packet Advertising Access Address Header Payload Length AdvA length Advertising Data! … manufacture flag connectable/nonconnectable UUID CRC Major Minor Power
  48. 48. Index データ 補足 0 0x02 ad field length 1 0x01 ad field type 2 0x06 connectable/undirect 3 0x1A ad field length 4 0xFF manufacturer data flag 5 0x4C manufacturer(Apple) 6 0x00 7 0x02 Magic Number 8 0x15 9 0x99 … 0x99 24 0x99 25 proximityUUID (任意の128bitデータ) 0x01 Major Number 16bit (任意の16bitデータ Little Endian) 26 0x01 27 0x01 Minor Number 16bit (任意の16bitデータ Little Endian) 28 0x01 29 0xCA Power (iBeaconから1メートル離れてiOSデバイスで計測したRSSI 2の補数)
  49. 49. Robin Heydon Bluetooth Low Energy: The Developer's Handbook, p.85
  50. 50. AP通信:Apple、米Apple Retail Storeで、iOS 7のiBeaconを使用した店内ガイドサービスの提供を開始 Macお宝鑑定団 blog(羅針盤) http://www.macotakara.jp/blog/apple_store/entry-21958.html
  51. 51. 本プレゼンテーションは独立したものであり、Apple Inc.が認定、後援、その他承認したものではありません。! 本プレゼンテーションの内容は著者が独自に調査した結果を記したものです。! 社名、製品名、システム名などは一般に各社の商標または登録商標です。

×