繁体   English   中英

iOS位置服务要求打开应用程序

[英]iOS Location Services asks on app open

只是尝试向我的应用添加位置服务(在ObjC中)。 我只想在我即将使用它时显示权限提示,但是当我第一次打开应用程序时会出现提示。

我的印象是只有在CLLocationManager对象上调用startUpdatingLocation时才会出现提示。 然而,这只在我的应用程序中调用某些ViewControllers(绝对不是我的第一个视图控制器)。

有趣的是这个问题只出现在iOS8中,在iOS7中很好用。 有人有类似的问题吗? 或者知道还有什么可能是错的?

谢谢。

iOS 8改变了位置服务的处理方式,这也意味着如果您支持较旧版本的操作系统,则可能需要进行一些额外的编码。 想要详细了解整个过程,请查看NSHipster

在iOS 8之前,是调用startUpdatingLocation会提示用户获得权限。 虽然现在请求权限和启动位置更新是分开的,但您需要调用requestWhenInUseAuthorizationrequestAlwaysAuthorization

不仅如此,在iOS8中,您需要显式添加两个plist键,然后定义它们的值: NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription ,这些字符串将显示在警报中,通知用户您的应用正在请求位置信息。

但严重的是,请查看链接。 解释这一切都是惊人的,远比我在这里总结的要好得多。

在不知道您放置代码的位置的情况下,我处理此问题的方式是

  • 创建一个请求位置访问的方法,即 - (void)findLocationAsk
  • 现在不要在应用程序启动时调用此方法,因为您不希望这种行为
  • 在视图控制器中调用此方法
  • 您可以在viewDidLoad或按钮操作中调用它,也可以将其作为计时器激活。

这应该会在应用程序启动时处理您的提示

更新:您的应用程序将在iOS 8启动时提示您进行位置访问。这是因为在plist文件中检测到了“必需的后台模式”所需的密钥。 您唯一能做的就是使该消息更具描述性,以便您需要访问权限。 将此键和描述对添加到plist文件中,并在其中添加您喜欢的任何解释文本

NSLocationWhenInUseUsageDescription请授予此应用程序访问您的位置的权限,如果检测到失败的登录尝试,您想知道它是谁

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM