Help us understand the problem. What is going on with this article?

【iBeacon】AppleのiBeaconサンプルアプリをビルドするときの注意

More than 3 years have passed since last update.

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];
}

ちなみにrequestWhenInUseAuthorizationrequestAlwaysAuthorizationがあって、前者はアプリを起動しているときだけ、後者はアプリを起動していなときでも位置情報を取得する許可を、ユーザに要求するメソッドです。

2. AirLocate-Info.plistに次の値を追加する

許可を求める際のユーザへのメッセージを設定します。

  • key: NSLocationAlwaysUsageDescription
  • value(String): <何らかのメッセージ>

ちなみにrequestWhenInUseAuthorizationのときのキーはNSLocationWhenInUseUsageDescriptionです。

ソース

ibeacon - Apple AirLocation demo App ranging not shows beacons - Stack Overflow

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away