Получение местоположения пользователя, не работающего в xcode

Добрый вечер, я пытаюсь позволить пользователям определять себя на карте. Когда я запускаю приложение и получаю доступ к представлению карт 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

Вы запустили CoreLocation?

Kathiresan Murugan 26.10.2018 07:33

@ktrkathir У меня он вызывается в моем импорте, но я никогда ничего для него не программировал. Я задам вопрос, чтобы показать свой код для карт Google.

user9951119 26.10.2018 07:39

Если вы используете simulator. включить место отладки

Kathiresan Murugan 26.10.2018 07:41

@ktrkathir Я обновил свой код выше, чтобы показать, как я реализовал gmaps

user9951119 26.10.2018 07:45
0
4
499
3

Ответы 3

Добавьте новые записи в ваш новый файл 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

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

Я запускаю это на своем телефоне, чтобы получить доступ к истинному местоположению пользователя. Я удалил и переустановил все ту же проблему.

user9951119 26.10.2018 07:39

Проверьте разрешение местоположения при настройке.

user10249172 26.10.2018 07:45

Я изменил его на "Всегда", но сообщение все еще приходит. Мое приложение не отправляет уведомление, разрешающее или запрещающее его.

user9951119 26.10.2018 07:50

Добавьте ниже ключи в plist.

Privacy - Location Always and When In Use Usage Description

Privacy - Location When In Use Usage Description

РЕДАКТИРОВАТЬ

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

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

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

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

locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()

@Toseefkhiliji, мне что-то еще не хватает? /

user9951119 28.10.2018 18:40

@zachwilcox: Обновленный ответ, удалите приложение из симулятора и запустите снова.

Toseef Khilji 29.10.2018 07:47

Я уже эти строки в своем коде. Я все еще получаю те же ошибки.

user9951119 29.10.2018 23:50

Я пробовал много исправлений, но он все еще говорит, что мне нужно обновить свой информационный лист. Я уже вставил указанные выше строки, но все еще получаю ту же ошибку.

user9951119 29.10.2018 23:56

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

Toseef Khilji 30.10.2018 05:58

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

Другие вопросы по теме