Customize
Permitted only in the use of this app (NSLocationWhenInUseUsageDescription)
Always allow (NSLocationAlwaysUsageDescription)
Always allow (NSLocationAlwaysUsageDescription)
info.plist
<Key> NSLocationWhenInUseUsageDescription </ key>
The acquisition of the <string> position information, Do you want to allow only at the time of this app use? </ String>
Program Changes
// セキュリティ認証のステータスを取得.
let status = CLLocationManager.authorizationStatus()
print("authorizationStatus:\(status)");
// まだ認証が得られていない場合は、認証ダイアログを表示
// (このAppの使用中のみ許可の設定)
if(status == notDetermined) {
self.myLocationManager.requestWhenInUseAuthorization()
}
<Key> NSLocationAlwaysUsageDescription </ key>
<String> the acquisition of position information, do you always permitted? </ String>
Program of the changes
// セキュリティ認証のステータスを取得.
let status = CLLocationManager.authorizationStatus()
print("authorizationStatus:\(status)");
// まだ認証が得られていない場合は、認証ダイアログを表示
// (このAppの使用中のみ許可の設定)
if(status == notDetermined) {
self.myLocationManager.requestAlwaysAuthorization()
}
Swift 3.0
//
//
// ViewController.swift
// CoreLocation001
//
// Copyright © 2016年 FaBo, Inc. All rights reserved.
//
import UIKit
import CoreLocation
class ViewController: UIViewController , CLLocationManagerDelegate{
var myLocationManager: CLLocationManager!
// 緯度表示用のラベル.
var myLatitudeLabel: UILabel!
// 経度表示用のラベル.
var myLongitudeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// ボタンの生成.
let buttonWidth: CGFloat = 100
let buttonHeight: CGFloat = 100
let posX: CGFloat = (self.view.bounds.width - buttonWidth)/2
let posY: CGFloat = (self.view.bounds.height - buttonWidth)/2
let myButton = UIButton(frame: CGRect(x: posX, y: posY, width: buttonWidth, height: buttonHeight))
myButton.backgroundColor = UIColor.orange
myButton.layer.masksToBounds = true
myButton.layer.cornerRadius = 50.0
myButton.setTitle("Get", for: .normal)
myButton.addTarget(self, action: #selector(ViewController.onClickMyButton(sender:)), for: .touchDown)
// 緯度表示用のラベルを生成.
myLatitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLatitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+100)
// 軽度表示用のラベルを生成.
myLongitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLongitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+130)
// 現在地の取得.
myLocationManager = CLLocationManager()
myLocationManager.delegate = self
// セキュリティ認証のステータスを取得.
let status = CLLocationManager.authorizationStatus()
print("authorizationStatus:\(status.rawValue)");
// まだ認証が得られていない場合は、認証ダイアログを表示
// (このAppの使用中のみ許可の設定) 説明を共通の項目を参照
if(status == .notDetermined) {
self.myLocationManager.requestWhenInUseAuthorization()
}
// 取得精度の設定.
myLocationManager.desiredAccuracy = kCLLocationAccuracyBest
// 取得頻度の設定.
myLocationManager.distanceFilter = 100
self.view.addSubview(myButton)
}
/*
認証に変化があった際に呼ばれる
*/
private func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
print("didChangeAuthorizationStatus");
// 認証のステータスをログで表示.
var statusStr: String = "";
switch (status) {
case .notDetermined:
statusStr = "未認証の状態"
case .restricted:
statusStr = "制限された状態"
case .denied:
statusStr = "許可しない"
case .authorizedAlways:
statusStr = "常に使用を許可"
case .authorizedWhenInUse:
statusStr = "このAppの使用中のみ許可"
}
print(" CLAuthorizationStatus: \(statusStr)")
}
/*
ボタンイベントのセット.
*/
func onClickMyButton(sender: UIButton){
// 現在位置の取得を開始.
myLocationManager.startUpdatingLocation()
}
/*
位置情報取得に成功したときに呼び出されるデリゲート.
*/
private func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// 緯度・経度の表示.
myLatitudeLabel.text = "緯度:\(manager.location!.coordinate.latitude)"
myLatitudeLabel.textAlignment = .center
myLongitudeLabel.text = "経度:\(manager.location!.coordinate.longitude)"
myLongitudeLabel.textAlignment = .center
self.view.addSubview(myLatitudeLabel)
self.view.addSubview(myLongitudeLabel)
}
/*
位置情報取得に失敗した時に呼び出されるデリゲート.
*/
func locationManager(_ manager: CLLocationManager,didFailWithError error: Error){
print("error")
}
}
Swift 2.3
//
//
// ViewController.swift
// CoreLocation001
//
// Copyright © 2016年 FaBo, Inc. All rights reserved.
//
import UIKit
import CoreLocation
class ViewController: UIViewController , CLLocationManagerDelegate{
var myLocationManager: CLLocationManager!
// 緯度表示用のラベル.
var myLatitudeLabel: UILabel!
// 経度表示用のラベル.
var myLongitudeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// ボタンの生成.
let buttonWidth: CGFloat = 100
let buttonHeight: CGFloat = 100
let posX: CGFloat = (self.view.bounds.width - buttonWidth)/2
let posY: CGFloat = (self.view.bounds.height - buttonWidth)/2
let myButton = UIButton(frame: CGRect(x: posX, y: posY, width: buttonWidth, height: buttonHeight))
myButton.backgroundColor = UIColor.orangeColor()
myButton.layer.masksToBounds = true
myButton.layer.cornerRadius = 50.0
myButton.setTitle("Get", forState: .Normal)
myButton.addTarget(self, action: #selector(onClickMyButton(_:)), forControlEvents: .TouchUpInside)
// 緯度表示用のラベルを生成.
myLatitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLatitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+100)
// 軽度表示用のラベルを生成.
myLongitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLongitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+130)
// 現在地の取得.
myLocationManager = CLLocationManager()
myLocationManager.delegate = self
// セキュリティ認証のステータスを取得.
let status = CLLocationManager.authorizationStatus()
print("authorizationStatus:\(status)");
// まだ認証が得られていない場合は、認証ダイアログを表示
// (このAppの使用中のみ許可の設定) 説明を共通の項目を参照
if(status == .NotDetermined) {
self.myLocationManager.requestWhenInUseAuthorization()
}
// 取得精度の設定.
myLocationManager.desiredAccuracy = kCLLocationAccuracyBest
// 取得頻度の設定.
myLocationManager.distanceFilter = 100
self.view.addSubview(myButton)
}
/*
認証に変化があった際に呼ばれる
*/
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
print("didChangeAuthorizationStatus");
// 認証のステータスをログで表示.
var statusStr: String = "";
switch (status) {
case .NotDetermined:
statusStr = "未認証の状態"
case .Restricted:
statusStr = "制限された状態"
case .Denied:
statusStr = "許可しない"
case .AuthorizedAlways:
statusStr = "AuthorizedAlways"
case .AuthorizedWhenInUse:
statusStr = "このAppの使用中のみ許可"
}
print(" CLAuthorizationStatus: \(statusStr)")
}
/*
ボタンイベントのセット.
*/
func onClickMyButton(sender: UIButton){
// 現在位置の取得を開始.
myLocationManager.startUpdatingLocation()
}
/*
位置情報取得に成功したときに呼び出されるデリゲート.
*/
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// 緯度・経度の表示.
myLatitudeLabel.text = "緯度:\(manager.location!.coordinate.latitude)"
myLatitudeLabel.textAlignment = .Center
myLongitudeLabel.text = "経度:\(manager.location!.coordinate.longitude)"
myLongitudeLabel.textAlignment = .Center
self.view.addSubview(myLatitudeLabel)
self.view.addSubview(myLongitudeLabel)
}
/*
位置情報取得に失敗した時に呼び出されるデリゲート.
*/
func locationManager(manager: CLLocationManager,didFailWithError error: NSError){
print("error")
}
}
2.xと3.xの差分
大きな修正はなし
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.