2015-10-29 2 views
1

Нашел несколько сообщений на этом, но все еще не может собрать его вместе.parse geoPointForCurrentLocationInBackground Swift sample

Я использую 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 
     } 
    } 
  • Я обновил NSLocationWhenInUseUsageDescription в моем info.plist
  • Пробовал симулятор и два реальных устройств.
  • Добавлено CLLocationManagerDelegate

Я пытаюсь избежать этого более сложной, чем она должна быть.

Я также экспериментировал с образцами CLLocationManager и, похоже, не работает.

Я использую самые последние версии всего ... начался с Парса вчера!

Я никогда не оспаривал разрешение на использование своего местоположения. Пробовал это с примерами CLLocationManager!

Был бы очень признателен за руководство/поддержку.

ответ

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 и дать ему строковое значение для сообщения пользователь во время запроса авторизации.

Запрос на авторизацию и обновление местоположения должны работать после вышеуказанных изменений.

+0

Как можно обновить местоположение, 'geoPoint', извлеченное из' geoPointForCurrentLocationInBackground'? Другими словами, если пользователь открывает приложение, и этот метод вызывается, то пользователь переходит в новое место, как можно установить геопоинт в новое место? – dnadri