こんにちは! 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ページにいいねしていただけると嬉しいです!!
Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】
posted with amazlet at 14.12.07
森 巧尚
マイナビ
売り上げランキング: 1,951
マイナビ
売り上げランキング: 1,951