SlideShare ist ein Scribd-Unternehmen logo
1 von 26
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
ご静聴ありがとうございました。

Weitere ähnliche Inhalte

Ähnlich wie iBeacon tips(potatotips27)

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

Ähnlich wie iBeacon tips(potatotips27) (20)

最近の活動について
(not ruby)
最近の活動について
(not ruby)最近の活動について
(not ruby)
最近の活動について
(not ruby)
 
最近の活動について(娯楽編)
最近の活動について(娯楽編)最近の活動について(娯楽編)
最近の活動について(娯楽編)
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
Niceboxを支える技術 〜AndroidはiBeaconの夢を見るか〜
 
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろうCocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
Cocos2d-x x iBeacon Bluetoothを使ったゲームを作ろう
 
ビーコンを使うサービス事業
ビーコンを使うサービス事業 ビーコンを使うサービス事業
ビーコンを使うサービス事業
 
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!
資格ねた第2弾 よく聞く〇冠をAlibabaでやってみた!
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
 
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
 
Ibeacon hack4aizu
Ibeacon hack4aizuIbeacon hack4aizu
Ibeacon hack4aizu
 
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた
開発者こそ知っておいて欲しい モバイルコンテンツデザイン 箱と中身の整えかた
 
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
Bluetooth LEデバイスと技適 〜EstimoteのBeaconsを使うと逮捕されるのか〜
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
 
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
 
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java
Javaアプリサーバとりあえずの監視 第二回 渋谷Java #shibuya_java
 
iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話iOSアプリを審査に提出してみた話
iOSアプリを審査に提出してみた話
 
BitriseでiOS/Androidアプリ開発が幸せになった話
BitriseでiOS/Androidアプリ開発が幸せになった話BitriseでiOS/Androidアプリ開発が幸せになった話
BitriseでiOS/Androidアプリ開発が幸せになった話
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 

Kürzlich hochgeladen

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Kürzlich hochgeladen (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

iBeacon tips(potatotips27)