swift – requestWhenInUseAuthorization()无法在iOS 8中使用Inf
发布时间:2020-12-14 05:43:08 所属栏目:百科 来源:网络整理
导读:我正在使用iOS SDK 8.1尝试调用requestWhenInUseAuthorization()方法来提示用户授予对我的应用程序的访问权限.我导入了CoreLocation.framework,并将NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription键添加到info.plist中.当我运行应
我正在使用iOS SDK 8.1尝试调用requestWhenInUseAuthorization()方法来提示用户授予对我的应用程序的访问权限.我导入了CoreLocation.framework,并将NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription键添加到info.plist中.当我运行应用程序时,它从未提示我进行位置访问.以下是我的代码,我错过了什么?
import UIKit import CoreLocation import MapKit class ViewController: UIViewController,CLLocationManagerDelegate { override func viewDidLoad() { super.viewDidLoad() var manager = CLLocationManager() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest let authorizationStatus = CLLocationManager.authorizationStatus() switch authorizationStatus { case .Authorized: println("authorized") case .AuthorizedWhenInUse: println("authorized when in use") case .Denied: println("denied") case .NotDetermined: println("not determined") case .Restricted: println("restricted") } manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } func locationManager(manager: CLLocationManager!,didUpdateLocations locations: [AnyObject]!) { let location = locations[0] as CLLocation println("Latitude: (location.coordinate.latitude). Longitude: (location.coordinate.longitude).") } func locationManager(manager: CLLocationManager!,didChangeAuthorizationStatus status: CLAuthorizationStatus) { switch status { case .Authorized: println("authorized") case .AuthorizedWhenInUse: println("authorized when in use") case .Denied: println("denied") case .NotDetermined: println("not determined") case .Restricted: println("restricted") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 控制台只显示“未确定”一次,没有别的.所以我去了iPhone模拟器=>设置=>隐私=>位置=>我的应用程序它向我展示了3个选项:“从不”,“使用应用程序时”,“始终”.但没有选择任何东西.
问题解决了.我的经理在viewDidLoad()方法中被声明为局部变量,但它应该是类级属性.
在我将经理声明移出viewDidLoad()之后,我的应用程序运行了. 不确定manager.requestWhenInUseAuthorization()是如何在场景后面工作的,以及为什么viewDidLoad()中定义的管理器不起作用.希望知道这个细节的人启发我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |