iBeaconサンプルアプリ「AirLocale」
Apple Developer Libraryに、iBeaconのサンプルアプリ「AirLocale」が掲載されています。
AirLocate: Using CoreLocation to monitor, range, and configure your device as an iBeacon
しかし、iOS7を想定して書かれているため、iOS8以降に対しては、ビルドはできるのですがうまく動作しません。
理由はiOS8から、位置情報の取得にユーザのパーミッションが必要になったからです。
修正箇所
1. APLAppDelegate.mのapplication:didFinishLaunchingWithOptions:
に次のコードを追加する。
APLAppDelegate.m
if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.locationManager requestAlwaysAuthorization];
}
ちなみにrequestWhenInUseAuthorization
とrequestAlwaysAuthorization
があって、前者はアプリを起動しているときだけ、後者はアプリを起動していなときでも位置情報を取得する許可を、ユーザに要求するメソッドです。
2. AirLocate-Info.plistに次の値を追加する
許可を求める際のユーザへのメッセージを設定します。
- key:
NSLocationAlwaysUsageDescription
- value(String): <何らかのメッセージ>
ちなみにrequestWhenInUseAuthorization
のときのキーはNSLocationWhenInUseUsageDescription
です。
ソース
ibeacon - Apple AirLocation demo App ranging not shows beacons - Stack Overflow