位置访问 - 应用不请求用户访问位置的权限 - iOS 11

Location access - App is not asking for user permission to access location - iOS 11

描述

应用程序未请求用户访问位置和获取状态 notDetermined 的权限

完美工作直到 iOS-10

var locationManager : CLLocationManager!

func getLocationDetails()
    {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()
        locationManager.allowsBackgroundLocationUpdates = true
        locationManager.startUpdatingLocation()

    }

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
    {
        if status == CLAuthorizationStatus.authorizedAlways || status == CLAuthorizationStatus.authorizedWhenInUse
        {
            locationManager.startUpdatingLocation()
        }
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    {


    }

Plist 截图

背景模式

请同时请求其他权限"When ever in use permission"并将这两个权限都添加到 plist 中。

请将requestAlwaysAuthorization改为whenInUseAuthentication。然后它将开始工作。我认为这可能是由于 xcode 的 GM Seed/Beta 版本。在稳定版本中,我们可能没有这个问题。

我已经阅读了 Apple 文档并找到了这个问题的解决方案。

Apple 更改了一些准则来获取用户位置。

这是视频 Link:Apple- What's New in Location Technologies

Full code for location access in Swift & Objective-C both

解法:

现在我们需要在 Plist 中添加三个 Authentication Key:

  1. NSLocationAlwaysAndWhenInUseUsageDescription
  2. NSLocationWhenInUseUsageDescription
  3. NSLocationAlwaysUsageDescription

Plist 看起来像: 身份验证消息屏幕将如下所示:

Full code for location access

我在 info.plist 文件中添加了 Keys 以请求权限,但是在删除应用程序并再次打开后,模拟器没有显示警报以允许用户 select 一个选项。

我可以在删除应用程序后再次出现警告,然后打开 settings 应用程序,最后再次安装应用程序。

希望对大家有所帮助。