iPhone上“X想要使用您当前的位置”背后的规则是什么?

时间:2010-02-18 09:13:05

标签: iphone core-location

在iPhone上使用位置感知会触发“X想要使用您当前的位置” - “不允许”/“确定”。在CLLocationManager文档中,声明:

“用户可以选择拒绝应用程序对位置服务数据的访问。在应用程序初次使用期间,Core Location框架会提示用户确认使用位置服务是否可接受。如果用户拒绝请求,CLLocationManager对象在将来的请求期间向其委托报告适当的错误。“

如果您点击“确定”以允许位置服务,我发现“初始使用”是两次。从第三次开始,iPhone将记住您将来使用该应用程序的设置。

但是,每次应用程序的一部分尝试使用位置服务时,按下“不允许”的用户将不断受到打扰。我已经在我自己的应用程序中尝试了至少15次,并且在“2010年温哥华 - 官方移动观众指南”中更多地点击了“不允许”。对于不想使用此功能的用户来说,这非常烦人。

我的问题:

  • 对于所有应用程序,如果您点击“确定”,iPhone会询问两次并记住设置。这是正确的观察吗?
  • 如果您点击“不允许”,iPhone会继续询问的次数是否有限制,或者这是否永远不会被记住?你怎么处理这个?由于locationManager:didFailWithError:被通知,我想它每次都可以增加一个计数器属性并坚持这一点。下次使用该应用程序时,将在我自己的代码中检查此设置。如果counter> = 2,请勿使用核心位置。
  • 我记得删除“确定”设置的唯一方法是将其重置为常规中的所有应用程序 - >重置 - >位置警告。有没有办法只为一个应用程序或我自己的代码执行此操作?

2 个答案:

答案 0 :(得分:5)

  1. 是的,它会一直问你两次。有点古怪和不直观的imho。我的理解是,如果您第一次按错了按钮。之后它会假设你知道自己想要什么。

  2. 我在LocateMe示例中找到了以下内容:

      连续两次启动应用程序的“不允许”与“永不允许”相同。   但我也读到其他人看到的行为与你相同。最近的操作系统更新可能有变化?无论如何,你的方法听起来很合理。

  3. 我不相信你只能重置一个应用程序,抱歉。

答案 1 :(得分:1)

您现在可以在常规,位置服务下的设置中为一个应用设置或取消设置。可能在4.0中引入?

如果您是注册开发人员,则可以查看最新测试版的API差异。他们可能会改进错误处理。