Получение местоположения пользователя, не работающего в XCode - PullRequest
0 голосов
/ 26 октября 2018

Добрый вечер, я пытаюсь позволить пользователям найти себя на карте.Когда я запускаю приложение и получаю доступ к моему представлению карт Google, я получаю сообщение об ошибке «это приложение попыталось получить доступ к конфиденциальным данным без описания использования. В Info.plist приложения должен содержаться ключ« NSLocationWhenInUseUsageDescription »со строковым значением, объясняющимпользователю, как приложение использует эти данные ", и на карте устанавливается состояние по умолчанию.

Я поместил

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs your current location</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs your current location</string>

в свой info.plist, но он говорит мне, что мне нужно добавить NSLocationWhenInUseUsageDescription для доступа к местоположению.Я уже вставил это, и это все еще не покажет местоположение пользователя!Я что-то пропускаю или это ошибка?он работал нормально для меня, прежде чем я обновил до последней версии XCode.

Мой код, который включает карты Google, выглядит следующим образом:

  func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    locationManager.delegate = self
    locationManager.stopUpdatingLocation()
    let location = locations.last
    let lat = (location?.coordinate.latitude)!
    let long = (location?.coordinate.longitude)!
    let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: 17.0)

    self.myMapView.animate(to: camera)

    showPartyMarkers(lat: lat, long: long)
}


func initGoogleMaps() {
    let camera = GMSCameraPosition.camera(withLatitude: 40.014281, longitude: -83.030914, zoom: 17.0)
    self.myMapView.camera = camera
    self.myMapView.delegate = self
    self.myMapView.isMyLocationEnabled = true
}
    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
    let lat = place.coordinate.latitude
    let long = place.coordinate.longitude

    showPartyMarkers(lat: lat, long: long)

    let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: 17.0)
    myMapView.camera = camera
    txtFieldSearch.text=place.formattedAddress

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Добавьте следующие ключи в plist.

Privacy - Location Always and When In Use Usage Description

Privacy - Location When In Use Usage Description

EDIT

Я не вижу инициализации для locationManager.

Используйте приведенный ниже код для инициализации:

   /// CLLocationManager object
   var locationManager: CLLocationManager = {
        let manager = CLLocationManager()
        manager.desiredAccuracy = kCLLocationAccuracyBest
        return manager
    }()

После того, как Init начнет обновление местоположения, для этого добавьте ниже строки в viewDidload

locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
0 голосов
/ 30 октября 2018

Я нашел ответ после перепоста вопроса. Если у кого-то также возникла эта проблема, вам нужно щелкнуть по настройкам целевой сборки ваших проектов, щелкнуть по информации (слева от настроек сборки), и вы хотите, чтобы в пользовательских целевых свойствах iOS была та же информация, что и у обычной р-лист. Если этого не произойдет, просто нажмите знак плюс и добавьте их. Это должно решить проблему, потому что это имеет с моим. Я надеюсь, что вы все найдете это полезным.

0 голосов
/ 26 октября 2018

Добавьте новые записи в ваш новый файл InfoPlist.strings.

<key>NSLocationAlwaysUsageDescription</key>
<string>app need your location for finding a place</string>

add  lines in viewdidload

locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
locationManager.desiredAccuracy = kCLLocationAccuracyBest

удалите приложение из симулятора и запустите снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...