使用用户位置时出错
Posted
技术标签:
【中文标题】使用用户位置时出错【英文标题】:Error on using User location 【发布时间】:2018-06-22 23:39:15 【问题描述】:为什么我不能使用用户位置?我已经在Info.plist
上添加了密钥,但是当我运行该应用程序时,我没有收到消息。可能会发生什么?
我在我的iPhone上测试过,我只是发布模拟器图像给你们看看我得到了什么。
【问题讨论】:
您需要编写代码来获取用户当前位置,在第一次它会请求许可并显示来自 info.plist 的消息,上述努力不会显示您想要的弹出窗口。 您好!问题是应用程序没有请求许可 请阅读我的评论,在请求许可后您需要正确的代码。您发布的代码不会显示任何警报,因为它仅用于警报消息,而不是获取用户的位置。 【参考方案1】:将此添加到 info.plist 文件中
<key>NSLocationAlwaysUsageDescription</key>
<string>Application needs permission to access your current location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Application needs permission to access your current location.</string>
并使用以下代码获取您的位置
class MapViewController: UIViewController, CLLocationManagerDelegate
var locationManager = CLLocationManager()
var currentLocation: CLLocation?
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = 10
locationManager.startUpdatingLocation()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.startUpdatingHeading()
// Handle incoming location events.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
let location: CLLocation = locations.last!
print("Location: \(location)")
// Handle authorization for the location manager.
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
switch status
case .restricted:
print("Location access was restricted.")
case .denied:
print("User denied access to location.")
case .notDetermined:
print("Location status not determined.")
case .authorizedAlways: fallthrough
case .authorizedWhenInUse:
print("Location status is OK.")
// Handle location manager errors.
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error)
locationManager.stopUpdatingLocation()
print("Error: \(error)")
【讨论】:
不幸的是,仍然无法正常工作。当我运行应用程序时,位置消息没有出现。以上是关于使用用户位置时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 fusedLocationProvider.removeLocationUpdates (locationCallback) Android Studio 时出错
使用 ref 获取组件位置时出错(ReactCannot 读取属性 'getBoundingClientRect' of null")