CLLocationManager:请求更高权限

问题描述 投票:1回答:4

CLLocationManager有两种方法来请求权限:

requestWhenInUseAuthorization
requestAlwaysAuthorization

然而,这些方法做什么,如果目前的授权状态是其他什么比“kCLAuthorizationStatusNotDetermined”。我想我的应用程序通过在应用程序中使用,如果用户需要,需要它的行动只要求更高的权限,只提示用户输入位置的权限启动。问题是,当我试图要求更高的权限,授权国家已经确定的,因此没有任何反应。是否有可能仍然提示用户更高的权限,而不必强迫他们去设置页面更改权限?

谢谢!

ios cocoa core-location
4个回答
0
投票

不,根据CLLocationManager文档就无法申请权限,如果你已经有了授予任何权限。这意味着你不能从WhenInUse更改为始终。你必须决定你想要当你第一次请求允许哪一个。


0
投票

由于iOS的8需要管理的项目>信息文件与授权

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

作为键和值会显示您的消息。


0
投票

苹果很清楚无论是在文档和在WWDC 2014个视频:你不能改变位置的服务的授权级别。一旦程序接收。当在使用授权,就不能获得总是授权。如果你的应用程序中的任何功能需要一定的授权,那么你应该问从一开始就始终认证。


0
投票

由于iOS的11,你甚至应该首先问.whenInUse权限,再后来升级为.always

Documentation

在iOS系统11以后,如果你最初要求只有当非使用许可,您可以拨打在稍后的时间requestAlwaysAuthorization()方法(如清单2所示)来升级您的应用程序的授权级别。

© www.soinside.com 2019 - 2024. All rights reserved.