【问题标题】:Location access - App is not asking for user permission to access location - iOS 11位置访问 - 应用程序不要求用户访问位置的权限 - iOS 11
【发布时间】:2018-03-02 08:51:51
【问题描述】:

说明

应用未请求用户访问位置的权限并获取未确定状态

在 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 截图

后台模式

【问题讨论】:

    标签: ios location core-location ios11 xcode9


    【解决方案1】:

    请同时请求其他权限“何时使用权限”并在 plist 上添加这两个权限。

    【讨论】:

    • 来自 iOS 11 的 +1,您不能始终将位置作为唯一选项,我们必须提供“使用时”选项。
    【解决方案2】:

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

    【讨论】:

    • 这与授权类型无关。我没有使用 Xcode 的 Beta 版本。
    • 在 iOS11 中更新我的应用程序时,我在 xcode GM 中遇到了同样的问题。并进行此更改,它开始在应用安装时向我显示警报。希望能帮助到你。尝试一次。
    【解决方案3】:

    我浏览了 Apple 文档并找到了这个问题的解决方案。

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

    这里是视频链接: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

    【讨论】:

    • 您的信息应该提供信息,否则苹果将在审核时拒绝该应用程序。
    • 请确保也添加了NSLocationAlwaysUsageDescription,否则在应用商店上传时会出错。
    【解决方案4】:

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

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

    希望它可以帮助某人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 2014-08-21
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2016-10-12
      • 2018-12-24
      相关资源
      最近更新 更多