Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

classmethod devio2015 J-1 iBeacon

1,172 views

Published on

classmethod devio2015 J-1

Published in: Mobile
  • Be the first to comment

classmethod devio2015 J-1 iBeacon

  1. 1. Developer Day iBeacon まるごと体験ツアー 1 A-1 小室 啓, iPhoneアプリサービス事業部札幌チームリーダー クラスメソッド株式会社 Ⓒ Classmethod, Inc. 2015年03月29日 J-1 Twitter: #cmdevio2015J
  2. 2. Profile KOMURO, Hiraku (小室 啓) 埼玉 → 東京 → 札幌 2014 年 10 月から札幌 iPhoneアプリサービス事業部札幌チームリーダー PL,Android, parse.com, Ingress(Resistance) Copyright © Classmethod, Inc.
  3. 3. チョットデキル Copyright © Classmethod, Inc.
  4. 4. Sapporo Copyright © Classmethod, Inc.
  5. 5. Supporter Profile OHMURA,Takatoshi 東京(秋葉原) iOS,Android, PHP, RDB, Embedded Ingress(Enlightened) Copyright © Classmethod, Inc.
  6. 6. Supporter Profile ARAKAWA,Yasuhisa 東京(秋葉原) iOS, Cocos-2dx, Develop Game Copyright © Classmethod, Inc.
  7. 7. アジェンダ iBeacon の説明 iBeaconを体験 iBeaconをプログラミング Discussion Copyright © Classmethod, Inc.
  8. 8. Some Question Do you have Android or iPhone? Are you iOS Application Developer? What is your favorite Programming Language? Do you know iBeacon? Copyright © Classmethod, Inc.
  9. 9. Beacon 原義は狼煙や 火といった位置と情報を伴った伝達手段の こと 21世紀初頭に於いては主に「無線標識」を指す 無線標識 = 電波灯台 Copyright © Classmethod, Inc.
  10. 10. Beacon 端末 光や電波などを発する固定された装置のこと その光を見た人や信号を受信した電子機器などが現在地を 知るのに使われる Copyright © Classmethod, Inc.
  11. 11. iBeacon とは Apple 社の登録商標 屋内測位システム BLE (Bluetooth Low Energy) を使用 iOS 7 以降で利用可能 Copyright © Classmethod, Inc.
  12. 12. iBeacon 使用例 Copyright © Classmethod, Inc. https://www.youtube.com/watch?v=SrsHBjzt2E8
  13. 13. できること Beacon 端末までの近接度を 3 段階で測定できる Immediate, Near, Far Beacon 端末観測領域への入場/退場を検知できる Copyright © Classmethod, Inc.
  14. 14. できないこと Beacon 端末の位置を知ること Beacon 端末までの距離を測ること 位置以外の情報取得 Copyright © Classmethod, Inc.
  15. 15. Beacon 端末の識別子 proximity UUID 128 bit(例:00000000-B9C9-1001-B000-001C4D04DDAB) major 16 bit(例:4) minor 16 bit(例:12) Copyright © Classmethod, Inc.
  16. 16. 電波干渉 Copyright © Classmethod, Inc.
  17. 17. 手に入れろ! Copyright © Classmethod, Inc.
  18. 18. 7 つの Beacon 端末 制限時間は 15 分 全て見つけた人はどんな願いでも叶う!(かもしれない) ※貴重品は一応所持していってください Copyright © Classmethod, Inc.
  19. 19. 願いは叶いましたか? Copyright © Classmethod, Inc.
  20. 20. アプリの仕組み Copyright © Classmethod, Inc.
  21. 21. Beacon の設定 Copyright © Classmethod, Inc. - (void)setupBeacons { if ([[CLLocationManager class] respondsToSelector:@selector(isMonitoringAvailableForClass:)] && [CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]]) { self.locationManager = [CLLocationManager new]; self.locationManager.delegate = self; [self.locationManager requestAlwaysAuthorization]; for (NSDictionary *beaconInfo in [[BeaconManager sharedManager] beaconsInformation]) { CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:beaconInfo[@"uuid"]] major:[beaconInfo[@"major"] integerValue] minor:[beaconInfo[@"minor"] integerValue] identifier:beaconInfo[@"identifier"]]; [self.locationManager startRangingBeaconsInRegion:beaconRegion]; } } }
  22. 22. デリゲートメソッド Copyright © Classmethod, Inc. - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { CLBeacon *beacon = beacons.firstObject; Ball *dragonBall = [self ballWithIdentifier:region.identifier]; switch (beacon.proximity) { case CLProximityImmediate: [manager stopRangingBeaconsInRegion:region]; [dragonBall found]; self.numberOfFound++; if (self.numberOfFound >= kNumberOfBalls) [self foundAll]; break; case CLProximityNear: [dragonBall startAnimationWithProximity:CLProximityNear]; break; case CLProximityFar: [dragonBall startAnimationWithProximity:CLProximityFar]; break; case CLProximityUnknown: [dragonBall stopAnimation]; break; } }
  23. 23. http://goo.gl/gWIAhM Copyright © Classmethod, Inc.
  24. 24. 10 分休憩 Copyright © Classmethod, Inc.
  25. 25. 作ってみる 現在いくつの Beacon 端末の観測領域に入っているかを検出 するアプリ 使用する Beacon 端末は 3 つ 入っている観測領域の数によって背景色を変える Copyright © Classmethod, Inc.
  26. 26. イメージ図 3 つの円の中心それぞれに Beacon 端末があるイメージ Copyright © Classmethod, Inc. 0 1 2 3 b b b
  27. 27. 注意点 iPhone の Bluetooth は ON にする アプリ起動時、ユーザーに位置情報の使用許可をもらう iOS 8 では以下の処理が必要 CLLocationManager#requestAlwaysAuthorization Info.plist に NSLocationAlwaysUsageDescription を追加する Copyright © Classmethod, Inc.
  28. 28. Welcome! Any your Question Supporterの方々はiOSアプリケーション開発のプロです。分 からない事があれば、どんどん質問してください。 Copyright © Classmethod, Inc.
  29. 29. Let’s Start !! Copyright © Classmethod, Inc.
  30. 30. Beacon 情報 proximity UUID 00000000-B9C9-1001-B000-001C4D04DDAB major / minor 1 / 1 1 / 3 1 / 4 Copyright © Classmethod, Inc.
  31. 31. Sample Answer Copyright © Classmethod, Inc.
  32. 32. http://goo.gl/vNg4aB Copyright © Classmethod, Inc.
  33. 33. プログラム例 Copyright © Classmethod, Inc. - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { CLBeacon *beacon = beacons.firstObject; switch (beacon.proximity) { case CLProximityImmediate: [self setIsNearBeaconWithValue:NO major:beacon.major minor:beacon.minor]; break; case CLProximityNear: [self setIsNearBeaconWithValue:YES major:beacon.major minor:beacon.minor]; break; case CLProximityFar: [self setIsNearBeaconWithValue:NO major:beacon.major minor:beacon.minor]; break; case CLProximityUnknown: [self setIsNearBeaconWithValue:NO major:beacon.major minor:beacon.minor]; break; } [self changeBackgroundColor]; }
  34. 34. プログラム例 Copyright © Classmethod, Inc. - (void)setIsNearBeaconWithValue:(BOOL)value major:(NSNumber *)major minor:(NSNumber *)minor { if (([major intValue] == kBeaconMajorValue1) && ([minor intValue] == kBeaconMinorValue1)) { self.isNearBeacon1 = value; } else if (([major intValue] == kBeaconMajorValue2) && ([minor intValue] == kBeaconMinorValue2)) { self.isNearBeacon2 = value; } else if (([major intValue] == kBeaconMajorValue3) && ([minor intValue] == kBeaconMinorValue3)) { self.isNearBeacon3 = value; } }
  35. 35. プログラム例 Copyright © Classmethod, Inc. - (void)changeBackgroundColor { NSUInteger nearCount = self.isNearBeacon1 + self.isNearBeacon2 + self.isNearBeacon3; switch (nearCount) { case 1: self.view.backgroundColor = [UIColor cyanColor]; break; case 2: self.view.backgroundColor = [UIColor yellowColor]; break; case 3: self.view.backgroundColor = [UIColor magentaColor]; break; default: self.view.backgroundColor = [UIColor whiteColor]; break; } }
  36. 36. DiscussionTime Copyright © Classmethod, Inc.
  37. 37. iBeacon でどんなことができる? Copyright © Classmethod, Inc.
  38. 38. 例えばこんなもの 日本で唯一iBeaconに準拠したビーコンを開発・販売してい るAplix社 東京メトロの中に数mおきにビーコンを配置。どこで点検 が行われているか、どこまで点検が行われているかを把握 している Copyright © Classmethod, Inc.
  39. 39. まとめ Copyright © Classmethod, Inc.
  40. 40. 最後に エンジニア募集中!! 私達と一緒に働きませんか? 広大な北の大地がみなさんを待っています!(東京も可) http://classmethod.jp/recruit/ ※お問い合わせの際は「"スライド"を見た」というとスムーズです。 Copyright © Classmethod, Inc. Androidもね
  41. 41. Developer Day ご静聴ありがとうございました。 スライドは後日ブログで公開します。 47 A-1 Ⓒ Classmethod, Inc. #cmdevio2015J

×