swift 位置权限检查和授权

atmip9wb  于 2023-01-12  发布在  Swift
关注(0)|答案(4)|浏览(359)

我想我的程序显示用户在Map上的位置。它是在第一次工作,然后随机停止,所以我添加了下面的代码,试图修复它,但我有问题。提前感谢!

override func viewDidLoad()
    {
        super.viewDidLoad()
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        if CLLocationManager.locationServicesEnabled()
        {

            let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
            if status == CLAuthorizationStatus.NotDetermined
            {
                locationManager.requestAlwaysAuthorization()
            }
            } else {

                print("locationServices disenabled")
            }
            locationManager.startUpdatingLocation()
            self.locationManager.startUpdatingLocation()
            self.mapView.showsUserLocation = true
            mapView.delegate = self
            centerMapOnLocation(initialLocation)
            addBoundry()
    }
afdcj2ne

afdcj2ne1#

你要求打电话,

locationManager.requestAlwaysAuthorization()

同样

locationManager.requestWhenInUseAuthorization()

在前景中也可以流畅地使用位置!!!
并且你不需要两个示例来调用startupdatinglocation。保留一个。你应该使用示例或全局变量而不是局部变量来获取整个作用域的位置。

    • 更新日期:**

您必须在info.plist中设置两个键,如NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription及其使用说明。

q9yhzks0

q9yhzks02#

如果您想要“WhenInUse”通知,您只需在您的info.plist中添加“Privacy - Location When In Use Description”,但如果您想要“Always”访问您的info. plist,您的info.plist应该看起来像以下info.plist截图:

您不必添加任何请求授权,如requestAlwaysAuthorization或requestWhenInUseAuthorization

ecfdbz9o

ecfdbz9o3#

我遇到了同样的问题,即使在info. plist中设置了NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription。我的调试器告诉我也要设置NSLocationAlwaysAndWhenInUseUsageDescription...所以我就这么做了。成功了!

wvt8vs2t

wvt8vs2t4#

这是我的代码:
首先导入库:

import CoreLocation

举个小例子:

let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
        if status == CLAuthorizationStatus.notDetermined || status == CLAuthorizationStatus.denied || status == CLAuthorizationStatus.restricted
        {
            locationManager?.requestAlwaysAuthorization()
        }

不要忘记在Info.plist中添加以下权限:

相关问题