【问题标题】:Dialog asking if user wants to allow use of location services pops and disappears in iPhone询问用户是否允许使用定位服务的对话框在 iPhone 中弹出并消失
【发布时间】:2011-11-18 10:07:21
【问题描述】:

我的 iPhone 应用程序使用定位服务。当我第一次安装并运行它时,它会显示一个对话框,询问用户是否想暂时允许使用定位服务并立即消失。这种情况会连续发生几次。

这是一个已知的错误还是我做错了什么?

【问题讨论】:

  • 你能发布一些使用位置管理器的代码吗?

标签: iphone xcode cocoa-touch core-location


【解决方案1】:

这听起来像是操作系统要求您批准该应用使用位置服务。我不知道有任何悬而未决的问题会阻止它按照您描述的方式关闭和重新打开。据我所知,您对此没有任何控制权,当您的应用触发基于位置的方法(例如 -startUpdatingLocation 或 -startMonitoringForRegion)时,它会自动出现。

您可能有另一个冲突视图,它试图从操作系统警报中窃取视图,但没有任何代码,很难说。希望这会有所帮助。

【讨论】:

  • 是的,这正是发生的事情。问题是我在使用位置服务时确实有不同的视图,但它们都没有在应用程序负载上运行。加载的主视图和第一个视图不使用位置服务。
  • 我会考虑在每个位置禁用您的位置信息,然后一次又一次地添加它们,直到您找到给您带来麻烦的人。您可以将模拟器重置为出厂设置,并将重置应用程序的位置服务触发器。这应该可以帮助您进行测试。
【解决方案2】:

我刚才在我的应用程序中遇到了同样的问题,我会将其添加为任何在谷歌上搜索该问题并遇到这个老问题的人的答案。

问题是,如果您在本地实例化 CLLocationManager 并要求它更新其位置,则请求权限的窗口在弹出后立即消失。

你必须让 CLLocationManager 成为一个属性(或者至少你不应该在本地实例化它),然后它才能工作。

【讨论】:

  • 有同样的问题,这个答案有帮助
  • 你是对的:这是因为局部变量没有在其他任何地方引用,因此 ARC 将释放它并释放它,从而导致对话框消失。因此,将 CLLocationManager 设为属性或实例变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2011-05-05
相关资源
最近更新 更多