Iphone模拟器没有获取位置

Posted

技术标签:

【中文标题】Iphone模拟器没有获取位置【英文标题】:Iphone simulator not getting location 【发布时间】:2016-09-19 08:59:10 【问题描述】:

我在 AppDelegate 中获取用户的经度和纬度,当我删除时它要求一次许可\在模拟器上再次重新安装后卸载应用程序它没有请求许可,所以应用程序在这里一直崩溃是我的代码

 func initLocationManager() 

    if( CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedWhenInUse ||
        CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Authorized)

        seenError = false
        locationFixAchieved = false
        locationManager = CLLocationManager()
        locationManager.delegate = self
        //        locationManager.locationServicesEnabled = true
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startUpdatingLocation()
        locationManager.requestAlwaysAuthorization()

    


// Location Manager Delegate stuff

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) 
    locationManager.stopUpdatingLocation()
    if ((error) != nil) 
        if (seenError == false) 
            seenError = true
            print(error)
        
    


func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    if (locationFixAchieved == false) 
        locationFixAchieved = true
        var locationArray = locations as NSArray
        var locationObj = locationArray.lastObject as! CLLocation
        var coord = locationObj.coordinate

        LATITUDE = coord.latitude
        LONGITUDE = coord.longitude

        print(coord.latitude)
        print(coord.longitude)
    




func locationManager(manager: CLLocationManager!,
                     didChangeAuthorizationStatus status: CLAuthorizationStatus) 
    var shouldIAllow = false

    switch status 
    case CLAuthorizationStatus.Restricted:
        locationStatus = "Restricted Access to location"
    case CLAuthorizationStatus.Denied:
        locationStatus = "User denied access to location"
    case CLAuthorizationStatus.NotDetermined:
        locationStatus = "Status not determined"
    default:
        locationStatus = "Allowed to location Access"
        shouldIAllow = true
    
    NSNotificationCenter.defaultCenter().postNotificationName("LabelHasbeenUpdated", object: nil)
    if (shouldIAllow == true) 
        NSLog("Location to Allowed")
        // Start location services
        locationManager.startUpdatingLocation()
     else 
        NSLog("Denied access: \(locationStatus)")
    

【问题讨论】:

所以模拟器上不行? 还是不行。如何快速获取用户位置 你在哪里打电话给requestWhenInUseAuthorization 它适用于模拟器。点击simulator.go to debug menu in xcode.than go to location.you can select location from here 我正在使用requestAlwaysAuthorization 【参考方案1】:

第一次尝试在 didFinishLaunchingWithOptions 获取用户位置,然后调用此方法获取更新的用户位置。

locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()


func locationManager(manager:CLLocationManager, didUpdateLocations locations:AnyObject[]) 
println("locations = \(locations)")
gpsResult.text = "success"

【讨论】:

但是用户位置每次都会改变 我想在每次应用启动时获取用户位置 我的答案适用于每次启动应用程序时获取用户位置。获取更新的用户位置呼叫

以上是关于Iphone模拟器没有获取位置的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 模拟器中设置位置

提供位置结果的 iPhone 模拟器

如何在 iPhone 上可靠地获取位置

React.js 地理位置在 iPhone/Android 上的浏览​​器中不起作用

在 iPhone 的 GPS 上获取错误的位置

在 iOS 中获取 iPhone 位置,无需将“位置服务”设置为“开”