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