[英]iOS Location Services asks on app open
只是尝试向我的应用添加位置服务(在ObjC中)。 我只想在我即将使用它时显示权限提示,但是当我第一次打开应用程序时会出现提示。
我的印象是只有在CLLocationManager
对象上调用startUpdatingLocation
时才会出现提示。 然而,这只在我的应用程序中调用某些ViewControllers(绝对不是我的第一个视图控制器)。
有趣的是这个问题只出现在iOS8中,在iOS7中很好用。 有人有类似的问题吗? 或者知道还有什么可能是错的?
谢谢。
iOS 8改变了位置服务的处理方式,这也意味着如果您支持较旧版本的操作系统,则可能需要进行一些额外的编码。 想要详细了解整个过程,请查看NSHipster
在iOS 8之前,是调用startUpdatingLocation
会提示用户获得权限。 虽然现在请求权限和启动位置更新是分开的,但您需要调用requestWhenInUseAuthorization
或requestAlwaysAuthorization
。
不仅如此,在iOS8中,您需要显式添加两个plist键,然后定义它们的值: NSLocationWhenInUseUsageDescription
和NSLocationAlwaysUsageDescription
,这些字符串将显示在警报中,通知用户您的应用正在请求位置信息。
但严重的是,请查看链接。 解释这一切都是惊人的,远比我在这里总结的要好得多。
在不知道您放置代码的位置的情况下,我处理此问题的方式是
这应该会在应用程序启动时处理您的提示
更新:您的应用程序将在iOS 8启动时提示您进行位置访问。这是因为在plist文件中检测到了“必需的后台模式”所需的密钥。 您唯一能做的就是使该消息更具描述性,以便您需要访问权限。 将此键和描述对添加到plist文件中,并在其中添加您喜欢的任何解释文本
NSLocationWhenInUseUsageDescription请授予此应用程序访问您的位置的权限,如果检测到失败的登录尝试,您想知道它是谁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.