位置访问 - 应用程序不要求用户访问位置的权限 - iOS 11

时间:2017-09-21 06:04:01

标签: ios location core-location ios11 xcode9

描述

应用程序不要求用户访问位置和获取状态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截图 enter image description here

背景模式

enter image description here

4 个答案:

答案 0 :(得分:12)

我已经浏览了Apple文档并找到了解决此问题的方法。

Apple已经改变了一些指导方针来获取用户位置。

以下是视频链接:Apple- What's New in Location Technologies

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

<强>解决方案:

现在我们需要在Plist中添加三个身份验证密钥:

  1. NSLocationAlwaysAndWhenInUseUsageDescription
  2. NSLocationWhenInUseUsageDescription
  3. NSLocationAlwaysUsageDescription
  4. Plist看起来像: enter image description here 身份验证消息屏幕将如下所示:

    enter image description here

    Full code for location access

答案 1 :(得分:1)

请同时询问其他许可“何时使用许可”并在plist上添加两项权限。

答案 2 :(得分:0)

我已在info.plist文件中添加以询问权限,但是在删除应用并再次打开后,模拟器无法显示允许用户选择一个选项的警报。

我可以在删除应用后再次显示提醒,然后打开settings 应用,最后再次安装应用。

希望它可以帮助某人。

答案 3 :(得分:-2)

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