gpt4 book ai didi

swift - requestWhenInUseAuthorization() 在 iOS 8 中无法使用 Info.plist 中的 NSLocationWhenInUseUsageDescription 键

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:11 24 4
gpt4 key购买 nike

我正在使用 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()
}

}

控制台只显示一次“not determined”,其他什么都没有。所以我去了 iPhone Simulator => Settings => Privacy => Location => My App。它向我显示了 3 个选项:“从不”、“使用应用程序时”、“始终”。但是没有选择任何东西。

最佳答案

问题解决了。我的 managerviewDidLoad() 方法中被声明为本地变量,但它应该是类级别的属性。

在我将 manager 声明移出 viewDidLoad() 之后,我的应用程序运行了。

不确定 manager.requestWhenInUseAuthorization() 在幕后究竟是如何工作的,以及为什么在 viewDidLoad() 中定义的 manager 不起作用。希望知道这个细节的人赐教。

关于swift - requestWhenInUseAuthorization() 在 iOS 8 中无法使用 Info.plist 中的 NSLocationWhenInUseUsageDescription 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com