9497


iBeacon端末に近づくとLocal Notificationを飛ばすアプリを開発しております。

iOS8から位置情報取得の設定が3種類となり、

  * Never
  * WhenInUse
  * Always

バックグラウンドでのiBeaconの観測については、Alwaysを使用するという認識でしたが  
クライアントから「可能であればWhenInUseで」という要望があり調べていたところ、  
[こちら](http://im-
sei.tumblr.com/post/91824653043/ios-8)のサイトでWhenInUseでもビーコンのレンジングは可能という表記がありました。

didRangeBeaconsがコールされて、  
ビーコン端末のメジャー,マイナーさえ取得できれば処理は可能なのですが、  
WhenInUseを指定すると、アプリ起動時/バックグラウンド時かまわずdidRangeBeaconが呼ばれません。

WhenInUse許可時のiBeaconのレンジングはどのように取得するかご存知のかたいらっしゃいますでしょうか。


CC BY-SA 3.0
2015-04-21T08:09:39.587
9371
2015-04-23T02:56:05.467
8772
question
ios objective-c swift ibeacon
iOS8での位置情報取得のWhenInUse設定でのiBeacon検出は可能か？


WhenInUseでの許可時はリンク先のとおり、領域検知ができないので`didEnterRegion`  
や`didDetermineState`内でのレンジングが開始できません。なので、アプリが  
立ち上がったタイミング等でBluetoothの状態を確認し、`startRangingBeaconsInRegion`  
を実行してレンジングを開始するような形になるかと思います。

ただしBeacon信号を受けたタイミングでLocal Notificationを実施するアプリ  
には領域検知が必須なように思いますので、Alwaysで許可をもらうようにする  
必要があるかと思います。


CC BY-SA 3.0
2015-04-23T02:56:05.467
9497
2015-04-23T02:56:05.467
9212
9371
answer