晚上好,我正在尝试允许用户在地图上定位自己。当我运行该应用程序并访问我的Google Maps视图时,收到错误消息“该应用程序试图访问对隐私敏感的数据,而没有使用说明。该应用程序的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
答案 0 :(得分:0)
在新的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
从模拟器中删除您的应用,然后再次运行。
答案 1 :(得分:0)
在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
}()
在Init开始更新位置后,为此在viewDidload中添加以下行
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
答案 2 :(得分:0)
重新发布问题后,我找到了答案。如果有人也遇到此问题,您要做的就是单击项目目标构建设置,单击信息(构建设置的左侧),然后确保“自定义iOS目标属性”具有与常规对象相同的信息。 p清单。如果不是这样,只需单击加号,然后将其添加进来。这应该可以解决问题,因为它与我有关。希望大家都觉得有用。