gpt4 book ai didi

iOS 应用程序位置权限目前无法正常工作

转载 作者:行者123 更新时间:2023-11-28 08:29:33 24 4
gpt4 key购买 nike

这是我的通用 ViewController 类,我研究了这个问题 iOS app doesn't ask for location permission ,我已经有了 NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription

@IBOutlet weak var ownMapView: MKMapView!

let locationManager : CLLocationManager = CLLocationManager();


override func viewDidLoad() {
super.viewDidLoad();

self.locationManager.delegate = self;
self.locationManager.requestWhenInUseAuthorization();
self.locationManager.startUpdatingLocation();
}

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
guard status == .AuthorizedWhenInUse else
{
print("Location not using");
return;
}

print("Location using.");
ownMapView.showsUserLocation = true;
}

即使我添加了 NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription 这也不适合我。它仅打印“位置未使用”

如何正确请求?

最佳答案

要正确理解这一点,请查看 CLLAuthorizationStatus 文档: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/c/tdef/CLAuthorizationStatus

CLAuthorizationStatus 有几个可能的值:

  • NotDetermined - 用户尚未做出允许/拒绝使用位置的决定
  • 受限 - 应用仅限于使用位置
  • 拒绝 - 用户拒绝使用位置。
  • AuthorizedAlways - 此应用有权随时启动定位服务。
  • AuthorizedWhenInUse - 应用程序被授权在前台运行时启动大多数定位服务

您只检查“AuthorizedWhenInUse”状态,但您首先启动它的状态是 NotDetermined。

您可以进一步查看状态如下:

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

if status == .NotDetermined
{
print ("Loction use not determined")
return
}
if status == .Denied
{
print ("Location determined")
return
}
guard status == .AuthorizedWhenInUse else
{
print("Location not using");
return;
}

print("Location using.");
ownMapView.showsUserLocation = true;
}

关于iOS 应用程序位置权限目前无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com