//in my viewDidLoad()
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.startUpdatingLocation()
self.locationManager.startMonitoringSignificantLocationChanges()
if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Denied{
println("location not authorized")
}
//somewhere down the file
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println("Location") //this prints on the phone, not simulator
self.locationManager.stopUpdatingLocation()
}
我在plist中也有“NSLocationWhenInUseUsageDescription”。
答案 0 :(得分:3)
只需从此处重置模拟器:
希望它有所帮助。
答案 1 :(得分:0)
这是与iOS 8相关的问题。您必须在.plist文件中放置NSLocationAlwaysUsageDescription
或NSLocationWhenInUseUsageDescription
个键(值可能是将在位置警报中显示的其他消息)。这些密钥在iOS 8中是必需的。
它如何在Apple指南中说:
我最终解决了自己的问题。
显然在iOS 8 SDK中,在开始位置更新之前需要requestAlwaysAuthorization
(用于后台位置)或requestWhenInUseAuthorization
(仅在前景时的位置)调用CLLocationManager
。
Info.plist中还需要NSLocationAlwaysUsageDescription
或NSLocationWhenInUseUsageDescription
键,并在提示中显示消息。添加这些解决了我的问题。
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.startUpdatingLocation()
self.locationManager.startMonitoringSignificantLocationChanges()
self.locationManager.requestWhenInUseAuthorization()
答案 2 :(得分:0)
目前iOS8 beta5中存在一个错误,该错误始终会停用您应用的地理定位服务(至少对我来说是这样)。
进入设置>隐私>位置服务>你的应用>总是
但我不知道为什么,但即使您将其设置为“始终”,此设置也会自动停用,因此请耐心等待并经常返回设置以再次配置您的应用位置。
答案 3 :(得分:0)
在第一次模拟器启动时,即使通过设置,也不会初始化位置 调试 - >位置 - >来自ios8的自定义位置。因此,您需要先从debug-> Location-> None中选择无选项,如下面的
[![enter image description here][1]][1]
[1]: http://i.stack.imgur.com/WAl14.png
and then next you should following
[![enter image description here][2]][2]
[2]: http://i.stack.imgur.com/oCtfB.png
现在终于你应该再次在模拟器上运行你的应用程序并使用 您的plist中的NSLocationWhenInUseUsageDescription键应使用以下代码:
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
答案 4 :(得分:-2)
模拟器中没有启用GPS。所以对于位置基础的东西,我们应该使用Device。默认情况下,模拟器将始终为您提供位置(0,0)。