栃木県のJavaエンジニア、WEBプログラマーのためのサイト

2015.02.03[Swift] 位置情報の利用許可(iOS8)

iOS8で位置情報

位置情報を使うにはユーザの許可が必要です。
iOS8 から Core Location に許可をもらうためのリクエスト機能(認証ダイアログ)が搭載されたのでそれを使って許可を得ます。

CLLocationManagerDelegate

Core Location Manager のデリゲーションを実装し、認証状態に応じて
リクエストダイアログを出すようにします。

import UIKit
import CoreLocation

class ViewController: UIViewController {
    var locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        locationManager.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

extension ViewController: CLLocationManagerDelegate {
    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        switch status {
        case .NotDetermined:
            // 未認証ならリクエストダイアログ出す
            locationManager.requestWhenInUseAuthorization()
        case .Restricted, .Denied:
            break
        case .Authorized, .AuthorizedWhenInUse:
            break
        default:
            break
        }
    }
}

Info.plist

Info.plist にダイアログに表示されるメッセージ(使用目的)を登録します。

"Info.plist"

<key>NSLocationWhenInUseUsageDescription</key>
<string>位置情報を使うね</string>

リクエストダイアログ

未認証状態(.NotDetermined)だと許可を得るためのダイアログが表示されます。

"Allow a message"

許可の種類

サンプルコードはアプリ「使用中のみ許可」のコードになっています。

許可の種類 Info.plistキー リクエストメソッド
使用中のみ許可 NSLocationWhenInUseUsageDescription requestWhenInUseAuthorization
常に許可 NSLocationAlwaysUsageDescription requestAlwaysAuthorization
この記事について
  • スッキリ (0)
  • 普通 (0)
  • 消化不良 (0)