如何在iOS 8或更早版本上实现CLLocationManager.requestLocation()?

时间:2015-09-04 10:13:22

标签: ios objective-c swift cllocationmanager

如果您已阅读新的iOS 9文档,您可能已经注意到一种新方法,该方法会使位置管理器在短时间内启动无线电,修复您的位置并获得所需的准确度(或超时)到达后,将其全部退回,将精确定位的位置交给代表。

该方法名为CLLocationManager.requestLocation(),可在iOS 9 SDK中使用。唉,我目前正在开发一款针对iOS 8的应用,并且仍然非常希望使用这种方法。我也不想自己重新实现它。

所以我的问题是:iOS是否有任何开源库实现这种一次性位置检索?

2 个答案:

答案 0 :(得分:2)

您需要先执行两个步骤

1)NSLocationWhenInUseUsageDescription

2)NSLocationAlwaysUsageDescription

然后

var locationManager = CLLocationManager()
    locationManager.delegate = self
    // locationManager.locationServicesEnabled
    locationManager.desiredAccuracy = kCLLocationAccuracyBest

    let Device = UIDevice.currentDevice()

    let iosVersion = NSString(string: Device.systemVersion).doubleValue

    let iOS8 = iosVersion >= 8

    if iOS8{

        locationManager.requestWhenInUseAuthorization()
    }
else{
locationManager.requestAlwaysAuthorization()
}

locationManager.startUpdatingLocation()

这将是Help.Thanksyou

答案 1 :(得分:0)

正如 Arslan Asim 所指出的,一个好的解决方案是使用INTULocationManager

来自文档:

manager.requestLocationWithDesiredAccuracy(.Block, timeout: 10.0) {
    (currentLocation, achievedAccuracy, status) in
    // Examine status to see if the request timed out.
    // If not, currentLocation stores the found location.
}