只是尝试向我的应用添加位置服务(在ObjC中)。我只想在我即将使用它时显示权限提示,但是当我第一次打开应用程序时会出现提示。
我的印象是只有在startUpdatingLocation
对象上调用CLLocationManager
时才会出现提示。然而,这只在我的应用程序中调用某些ViewControllers(绝对不是我的第一个视图控制器)。
有趣的是这个问题只出现在iOS8中,在iOS7中很好。有人有类似的问题吗?或者知道还有什么可能是错的?
感谢。
答案 0 :(得分:2)
iOS 8会更改位置服务的处理方式,这也意味着如果您支持较旧版本的操作系统,则可能需要进行一些额外的编码。如需详细了解整个流程,请查看NSHipster
在iOS 8之前,是的,调用startUpdatingLocation
会提示用户获得许可。虽然现在请求权限并启动位置更新是分开的,但您需要致电requestWhenInUseAuthorization
或requestAlwaysAuthorization
。
不仅如此,在iOS8中,您需要显式添加两个plist键,然后定义它们的值:NSLocationWhenInUseUsageDescription
和NSLocationAlwaysUsageDescription
,这些字符串将显示在警报中,通知用户您的应用正在请求位置信息。
但严重的是,请查看链接。它在解释这一切方面非常出色,远比我在这里总结的要好得多。
答案 1 :(得分:1)
在不知道您放置代码的位置的情况下,我处理此问题的方式是
这应该会在应用启动时处理您的提示
<强>更新强> 您的应用程序将在iOS 8启动时提示您进行位置访问。这是因为在plist文件中检测到了“必需的后台模式”所需的密钥。您唯一能做的就是使该消息更具描述性,以便您需要访问权限。将此密钥和描述对添加到plist文件中,并在其中添加您喜欢的任何解释文本
NSLocationWhenInUseUsageDescription 如果检测到失败的登录尝试并且您想知道它是谁
,请授予此应用访问您的位置的权限