こんにちは! Objective-CよりSwiftはだいぶ書きやすいですね!storyboardも直感的でとてもいい感じです。
さて、本題ですが、CoreLocationで位置情報を取得しようとしたのですが、なかなか確認のアラートが出てくれない。 色々詰まりに詰まった結果、こうやれば出来たよ!ってのを書きたいと思います。
まずはコードとしてはこんな感じ
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager: CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager = CLLocationManager()
self.locationManager.delegate = self
let status = CLLocationManager.authorizationStatus()
// 認証が得られていない場合認証ダイアログを表示
if(status == CLAuthorizationStatus.NotDetermined) {
self.lm.requestWhenInUseAuthorization()
}
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = 300
self.locationManager.startUpdatingLocation()
}
// 位置情報取得成功
func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) {
NSLog("緯度:\(newLocation.coordinate.latitude) 経度:\(newLocation.coordinate.longitude)")
}
// 位置情報取得失敗
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
NSLog("\(error)")
}
}
これでいけるはずなんですが、なぜかいかない。実機テストでも位置情報が取得出来ない。 iOS側で設定しなきゃいけないのか?と思って設定から位置情報をオンにしても動かない。 なぜだーーー!と思って検索してたら、iOS8からは info.plistに使う理由を書かないとダメだよ!っていうstackoverflowを見つけました!
Location Services not working in iOS 8
ということで、 info.plistを開いて言われた通りに書きましょう。
NSLocationWhenInUseUsageDescription このアプリは位置情報を使ったアプリです NSLocationAlwaysUsageDescription このアプリは位置情報を常に使うアプリです
先ほどのコードの場合だと NSLocationWhenInUseUsageDescriptionだけで十分ぽいですが、ついでなので両方追加しておきました! これで動いた!!
少しでも約に立てれればFacebookページにいいねしていただけると嬉しいです!!
