解析geoPointForCurrentLocationInBackground Swift示例

时间:2015-10-29 23:02:26

标签: ios parse-platform geolocation

在此发现了多个帖子,但仍然无法将它们拼凑在一起。

我正在使用Parse来检索用户的当前位置。文档使它看起来很容易,但似乎缺少一些东西。 https://parse.com/docs/ios/guide#geopoints-getting-the-user-39-s-current-location

首先,我的代码:

class TableViewController: UITableViewController, CLLocationManagerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

    print("Get GPS")
    PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint, error ) -> Void in
        if error == nil {
            print("Got geoPoint") //Never reaches this
            print(geoPoint)
        } else {
            print(error ) //No error either
        }
    }
  • 我在info.plist中更新了NSLocationWhenInUseUsageDescription
  • 尝试过模拟器和两个真实设备。
  • 添加了CLLocationManagerDelegate

我试图避免让它变得比它需要的更复杂。

我也尝试过CLLocationManager样本,它似乎也没有用。

我正在使用最新版本的所有内容......昨天开始使用Parse!

我从来没有被授权使用我的位置。尝试使用CLLocationManager示例!

非常感谢一些指导/支持。

1 个答案:

答案 0 :(得分:0)

在从Parse处理位置更新之前,你错过了一些事情是正确的。

首先,向您的班级添加位置管理器属性。

class TableViewController: UITableViewController, CLLocationManagerDelegate {

    var locationManager = CLLocationManager()

设置其委托并使用它来请求用户授权:

override func viewDidLoad() {
    super.viewDidLoad()

    locationManager.delegate = self
    locationManager.requestWhenInUseAuthorization()

    print("Get GPS")
    PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint, error ) -> Void in
        if error == nil {
            print("Got geoPoint") //Never reaches this
            print(geoPoint)
        } else {
            print(error ) //No error either
        }
    }
}

在Info.plist中,您需要添加一个键NSLocationWhenInUseUsageDescription,并在授权请求期间为用户提供一个消息字符串值。

在上述更改后,授权请求和位置更新应该有效。