Phi*_*hil 7 mapkit ios swift ios8
我正在尝试在iOS 8上使用MapKit并且我不断收到错误:
Trying to start MapKit location updates without prompting for location authorization. Must call
-[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager
requestAlwaysAuthorization] first.
Run Code Online (Sandbox Code Playgroud)
在这里查找,我发现我必须NSLocationWhenInUsageDescription在我的plist中实现并且也调用locationManager.requestWhenInUseAuthorization()但没有任何反应,我仍然在控制台中得到错误.我究竟做错了什么?
小智 10
在我的应用程序委托中,我为类外的locationManager创建了一个可选的var,然后进行设置
locManager = CLLocationManager()
locManager!.requestWhenInUseAuthorization()
Run Code Online (Sandbox Code Playgroud)
如果您正确更改它,则会导致使用NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription弹出警报视图.
然后在视图控制器文件中,我在类外部创建了另一个var来保存本地CLLocationManager.我接着说
if locManager {
locMan = locManager!
locMan!.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用委托方法
func locationManager(_manager: CLLocationManager!,didChangeAuthorizationStatus status: CLAuthorizationStatus)
Run Code Online (Sandbox Code Playgroud)
当授权状态改变时调用它,当用户响应弹出时它会执行.在此内部,您可以使用这段代码将用户位置放在地图上
if status == CLAuthorizationStatus.AuthorizedWhenInUse {
map.showsUserLocation = true
}
Run Code Online (Sandbox Code Playgroud)
仅当您在使用时获得授权时,才会将用户位置添加到地图中.
小智 9
我也被那个人困扰,直到我意识到info.plist钥匙已经改变.如果您有NSLocationUsageDescription,则需要更改为?NSLocationAlwaysUsageDescription或NSLocationWhenInUseUsageDescription(至少设置一个YES),现在在iOS8中必须更改.
然后,Robert的代码可以正常工作(感谢分享).
它是NSLocationWhenInUseUsageDescription,而不是NSLocationWhenInUsageDescription.网上的大多数地方都有错误的密钥
| 归档时间: |
|
| 查看次数: |
10518 次 |
| 最近记录: |