我可以让我的CLLocationManager进行授权。 (在ios8下迅速) 我甚至添加了一个显式的requestAlwaysAuthorization调用(在ios7下我不需要使用objC)
func finishLaunch() {
//ask for authorization
let status = CLLocationManager.authorizationStatus()
if(status == CLAuthorizationStatus.NotDetermined) {
self.locationManager.requestAlwaysAuthorization();
}
else {
self.startMonitoring()
}
...
}
回调永远不会得到任何东西,但NotDermined并没有向用户显示UIAlertView。
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if(status == CLAuthorizationStatus.NotDetermined) {
println("Auth status unkown still!");
}
self.startMonitoring()
}
我做错了吗? - 对我来说感觉像个错误,但我想要一些反馈
答案 0 :(得分:38)
请注意,NSLocationAlwaysUsageDescription
或NSLocationWhenInUseUsageDescription
密钥现在是强制性的,因此您应将其包含在plist中。
答案 1 :(得分:3)
您唯一需要做的就是将密钥“NSLocationWhenInUseUsageDescription”添加到您的应用程序info.plist,然后创建一个CLLocationManager requestWhenInUseAuthorization方法并在viewDidLoad中调用它。
答案 2 :(得分:1)
正如我的objC应用程序一样 - 我知道在ios7下工作得很好 - 我认为它应该是一个操作系统错误并报告它:#17128352
答案 3 :(得分:0)
我有一个有趣的案例,有一个键盘插件,它需要位置。
键盘位置使用权限始终被重置。 您可以分别请求两个位置定位。但是在 iOS设置应用中,它们都被显示为一条记录,并获得了两项的一般许可。
(应用程序和嵌入式键盘)都具有Info.plist
个文件。
在两个NSLocationAlwaysUsageDescription
文件中都指定NSLocationWhenInUseUsageDescription
/ Info.plist
很重要。
如果您错过了应用程序NSLocationAlwaysUsageDescription
中的NSLocationWhenInUseUsageDescription
/ Info.plist
,那么当您打开应用程序时,iOS将重置为键盘获得的权限!!!