【发布时间】:2018-05-12 14:57:28
【问题描述】:
我到处找,包括Apple's sample app。 但是当我不需要在手机上运行任何代码就可以请求位置时,我找不到任何地方,下面的代码在“接口控制器”中使用时返回“未确定”状态。我确实检查了我的 info.plist 是否设置了隐私密钥值。
import Foundation
import CoreLocation
class LocationManager: NSObject, CLLocationManagerDelegate {
/// Location manager to request authorization and location updates.
let manager = CLLocationManager()
/// Flag indicating whether the manager is requesting the user's location.
var isRequestingLocation = false
var workoutLocation: CLLocation?
func requestLocation() {
guard !isRequestingLocation else {
manager.stopUpdatingLocation()
isRequestingLocation = false
return
}
let authorizationStatus = CLLocationManager.authorizationStatus()
switch authorizationStatus {
case .notDetermined:
isRequestingLocation = true
manager.requestWhenInUseAuthorization()
case .authorizedWhenInUse:
isRequestingLocation = true
manager.requestLocation()
case .denied:
print("Location Authorization Denied")
default:
print("Location AUthorization Status Unknown")
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard !locations.isEmpty else { return }
DispatchQueue.main.async {
let lastLocationCoordinate = locations.last!.coordinate
print("Lat = \(lastLocationCoordinate.latitude)")
print("Long = \(lastLocationCoordinate.longitude)")
self.isRequestingLocation = false
}
}
}
主应用信息.plist
<key>NSLocationAlwaysUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
<key>NSLocationUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
观看扩展信息.plist
<key>NSLocationAlwaysUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
<key>NSLocationUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We will read your location while performing a workout to create a workout route</string>
【问题讨论】:
-
您找到解决方案了吗?我也有同样的情况。
-
@kolczak 我还没有,准备回来。如果你有什么发现,请告诉我。
标签: ios swift core-location apple-watch