iBeacon tips(potatotips27)

光 佐藤
光 佐藤-- at Oisix
iBeacon Tips
potatotips-27
佐藤 光
iOS App Developer
佐藤 光
@SatoHikaruDev
iOSアプリのプログラミングと、少しのサーバーサイドjavaやAndroidアプリの
プログラミングをしています。
自己紹介
目次
• iBeaconとは
• iBeacon利用時に必要な条件
• 実装
• よいと思ったところ
• 悪いと思ったところ
iBeaconとは?
• Beaconと呼ばれる発信機から出て
いるBluetooth Low Energy(BLE)
の信号を受信する機能。
• 近くのお店のクーポンや商品情報
を通知にするのに利用されている
。
• iOS7に搭載されて、2014年ぐら
いに話題になったが、いまだあまり
多くに浸透はしていないように感じ
ている(似たような技術のNFCに比
べて)。
• だが、アイデア次第では今後ブレイ
クの可能性はまだまだあるのでは?
と思って、今回の題材にしました。
iBeacon利用時に必要な条件
• Beacon機器(aplix、estimote、Gimbalなど)
✓ 1個300円〜3000円くらい
✓ iPhoneやMacでもOK
• iOS7以降
• Bluetoothが搭載されたiPhone/iPad/iPodなど
実装
Beacon監視開始
locationManager = CLLocationManager()
locationManager.delegate = self
//iBeaconは位置情報「常に利用」の許可が必要。info.plistにもNSLocationAlwaysUsageDescriptionを追加しておく。
if locationManager.respondsToSelector("requestAlwaysAuthorization") {
locationManager.requestAlwaysAuthorization()
}
//ビーコン領域を生成
let uuidString = "EBEFD083-70A2-47C8-9837-E7B5634DF524"
let beaconIdentifier = "sample_iBeacon"
let beaconUUID = NSUUID(UUIDString: uuidString)!
let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID,
identifier: beaconIdentifier)
//let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID, major: 3, minor: 1, identifier: beaconIdentifier)
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnEntry = false
//beacon領域に入ったときのdelegateからの通知がいらないときはfalse。defaultはtrue
//beaconRegion.notifyOnExit = false
//iPhoneのロック解除ボタンが押されて、ロック中画面が表示されたときにBeaconの状態(内側にいるか外側にいるか)を確認するかど
うか。defaultはfalse
beaconRegion.notifyEntryStateOnDisplay = true
//Beaconの領域IN/OUTの監視開始
//これで、locationManager:didEnterRegion や
//locationManager:didExitRegionが通知される(アプリが起動していない時でも)
//20個(uuidString/major/minorの組み合わせ)のbeaconRegionまで監視可能
locationManager.startMonitoringForRegion(beaconRegion)
Beacon領域IN/OUTを検知(delegate)
//以下のdelegeteはアプリが起動していなくてもコールされる(その際、AppDelegateのdidFinishLaunchingWithOptionsがコールさ
れた後に、以下のdelegateメソッドがコールされる)
/**
* beaconの領域に入った
*/
func locationManager(manager: CLLocationManager,
didEnterRegion region: CLRegion) {
manager.startRangingBeaconsInRegion(region as! CLBeaconRegion)
manager.startUpdatingLocation()
//結構感度が良い
}
/**
* beaconの領域から出た
*/
func locationManager(manager: CLLocationManager,
didExitRegion region: CLRegion) {
//didEnterRegionに比べて感度が悪い
}
/**
* beaconRegion.notifyEntryStateOnDisplay = true時に、iPhoneのロック解除ボタンが押されて、ロック中画面が表示された時、コ
ールされる。
*/
func locationManager(manager: CLLocationManager,
didDetermineState state: CLRegionState,
forRegion region: CLRegion) {
//現在、対象Beaconの内側/外側/どちらかかわらないかが、stateで取得できる
}
Beacon領域IN/OUTのエラー検知(delegate)
/**
* beacon監視でエラー。
*/
func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region:
CLRegion?, withError error: NSError) {
//ex) 監視するbeaconが無効、beaconを21種類以上登録した場合など
}
Beaconデータの受信開始
locationManager.delegate = self
//Beaconデータの受信開始。Beaconデータ(CLBeacon)には
//uuid/major/minor/CLProximity(すぐ近く/近い/遠い)/rssi(信号強度)が入っている
locationManager.startRangingBeaconsInRegion(beaconRegion)
Beaconデータ受信を検知(delegate)
/**
* Beaconデータ受信処理
*/
func locationManager(manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon],
inRegion region: CLBeaconRegion) {
//Beaconデータ受信時は何度もコールされる。CLBeaconには
uuid/major/minor/CLProximity(すぐ近く/近い/遠い)/rssi(信号強度) が入っている
//Beacon範囲に入っている時はbeaconsリストにCLBeaconオブジェクトが入っているが
、
//Beacon範囲から出てもしばらくbeaconsリストが空でコールされる。
}
Beaconデータ受信のエラー検知(delegate)
func locationManager(manager: CLLocationManager,
rangingBeaconsDidFailForRegion region: CLBeaconRegion,
withError error: NSError) {
//beaconデータ受信でエラー。
//ex) 監視するbeaconが無効など
}
よいと思ったところ
• iPhoneのロック解除ボタンを押した時にも
Beacon検知タイミングがあるところ。
✓ ローカル通知したいときに、ユーザーの目に
つきそう
• Beacon検知している時、ロック画面左下に
アプリのアイコンが表示される。
by スマートフォンECラボ(http://smartphone-ec.net/)
• 省電力
✓ iBeaconの方が、GPSを利用した領域観測
(iOSの別機能)に比べて電池が長持ちしそう
✓ Beacon機器は乾電池2本でほとんどのもの
が1年以上は持つ。
悪いと思ったところ
• iPhoneの電源ONにした直後1〜5
分くらいBeaconを検知できない時
間がある。
• Beacon領域OUTの検知が遅いので、そ
れを早めに検知したい時は工夫が必要
そう。
✓ Beaconデータ受信検知で受信データが
空になった時と組み合わるなど
まとめ
• 実装はかなり簡単。
• アプリを起動していなくても、起動できるトリガ
ーが多い(Beacon IN/OUT検知、ロック画面表示
時)。
• まだ流行ってはいないが、日本でも徐々に
iBeaconサービスが出てきているので、今後普及
するかも?
佐藤 光
@SatoHikaruDev
http://qiita.com/HIkaruSato
ご静聴ありがとうございました。
1 of 26

Recommended

جمال الجزيري الإبداع والحضارة عند شكري عياد نقد أدبي by
جمال الجزيري الإبداع والحضارة عند شكري عياد نقد أدبيجمال الجزيري الإبداع والحضارة عند شكري عياد نقد أدبي
جمال الجزيري الإبداع والحضارة عند شكري عياد نقد أدبيجمال الجزيري
207 views138 slides
iBeaconsを触ってみた by
iBeaconsを触ってみたiBeaconsを触ってみた
iBeaconsを触ってみたAtsushi Ito
3.5K views27 slides
iBeaconを使ったアプリ開発 by
iBeaconを使ったアプリ開発iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発Nishida Kansuke
3.5K views23 slides
iBeacon (Lightning Talk @ NDS in Niigata #1) by
iBeacon (Lightning Talk @ NDS in Niigata #1)iBeacon (Lightning Talk @ NDS in Niigata #1)
iBeacon (Lightning Talk @ NDS in Niigata #1)Masashi MATSUI
709 views19 slides
iBeacon Applications by
iBeacon ApplicationsiBeacon Applications
iBeacon ApplicationsKosuke Usami
571 views41 slides
iBeaconを触ってみた by
iBeaconを触ってみたiBeaconを触ってみた
iBeaconを触ってみたShigeyuki Takeuchi
1.1K views8 slides

More Related Content

Similar to iBeacon tips(potatotips27)

最近の活動について
(not ruby) by
最近の活動について
(not ruby)最近の活動について
(not ruby)
最近の活動について
(not ruby)BeMarble
1.3K views33 slides
最近の活動について(娯楽編) by
最近の活動について(娯楽編)最近の活動について(娯楽編)
最近の活動について(娯楽編)BeMarble
813 views33 slides
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話 by
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話Kentaro Matsumae
19.4K views130 slides
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜 by
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜Yoshihiro Wada
1.2K views10 slides
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう by
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろうCocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろうTomoo Kaku
5.5K views22 slides
ビーコンを使うサービス事業 by
ビーコンを使うサービス事業 ビーコンを使うサービス事業
ビーコンを使うサービス事業 CRI Japan, Inc.
10.5K views37 slides

Similar to iBeacon tips(potatotips27)(20)

最近の活動について
(not ruby) by BeMarble
最近の活動について
(not ruby)最近の活動について
(not ruby)
最近の活動について
(not ruby)
BeMarble1.3K views
最近の活動について(娯楽編) by BeMarble
最近の活動について(娯楽編)最近の活動について(娯楽編)
最近の活動について(娯楽編)
BeMarble813 views
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話 by Kentaro Matsumae
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae19.4K views
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜 by Yoshihiro Wada
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
Yoshihiro Wada1.2K views
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう by Tomoo Kaku
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろうCocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
Tomoo Kaku5.5K views
ビーコンを使うサービス事業 by CRI Japan, Inc.
ビーコンを使うサービス事業 ビーコンを使うサービス事業
ビーコンを使うサービス事業
CRI Japan, Inc.10.5K views
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた! by ChikaSawano
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!
ChikaSawano66 views
やはりお前らのiOS7対応は間違っている by 今城 善矩
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
今城 善矩37.1K views
iQONを支えるクローラーの裏側 by Takehiro Shiozaki
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki9.7K views
Ibeacon hack4aizu by Akira Sasaki
Ibeacon hack4aizuIbeacon hack4aizu
Ibeacon hack4aizu
Akira Sasaki2.7K views
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた by Rin Yano
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた
Rin Yano9.2K views
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜 by Shuichi Tsutsumi
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Shuichi Tsutsumi3K views
Xcode7時代のアプリ配布 by toyship
Xcode7時代のアプリ配布Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship4.1K views
iOSエンジニア in ハードウェア・プロジェクト by Shuichi Tsutsumi
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
Shuichi Tsutsumi12.6K views
.NET 7におけるBlazorの新機能 by TomomitsuKusaba
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
TomomitsuKusaba512 views
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java by chonaso
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java
chonaso345 views
iOSアプリを審査に提出してみた話 by Hideki Abe
iOSアプリを審査に提出してみた話iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話
Hideki Abe2K views
BitriseでiOS/Androidアプリ開発が幸せになった話 by Eigo Takazawa
BitriseでiOS/Androidアプリ開発が幸せになった話BitriseでiOS/Androidアプリ開発が幸せになった話
BitriseでiOS/Androidアプリ開発が幸せになった話
Eigo Takazawa1.8K views

Recently uploaded

SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
366 views13 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
73 views29 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
132 views42 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
11 views36 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
420 views15 slides

Recently uploaded(12)

SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4366 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.73 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda420 views
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka89 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga24 views

iBeacon tips(potatotips27)