【问题标题】:How do detect GPS on/of at iPhone xcode and how can we know about our application isn't allowed using gps?如何在 iPhone xcode 上检测 GPS 开启/关闭以及我们如何知道我们的应用程序不允许使用 gps?
【发布时间】:2011-07-28 04:58:20
【问题描述】:

我想制作将使用 GPS 的应用程序,因为我们知道用户第一次使用需要 gps/当前位置的应用程序时,会弹出一个请求许可的窗口,问题是.. 示例:

用户选择不允许,那么我们如何知道用户使我们的应用程序无法访问她/他的gps以了解他/她的位置?因为我的应用程序需要 CurrentLocation,所以如果我可以检测到用户选择了什么,我想制作一个弹出窗口,就像第一个弹出窗口一样,再次请求许可。

或任何可以让我的应用程序打开/关闭 gps 的代码?

想象一下,如果用户错误地不允许?我的应用程序是否可以重新询问用户?

当位置不可用时,像 Yelp 这样的应用程序应该怎么做?

【问题讨论】:

    标签: iphone xcode popup gps detect


    【解决方案1】:

    从 iOS 4.2 开始,实现 CLLocationManagerDelegate 方法的类(如 -locationManager:didUpdateToLocation:fromLocation:)也应该实现 -locationManager:didChangeAuthorizationStatus:。该方法将收到四种状态;要检查您的应用程序是否无法使用定位服务,请查找kCLAuthorizationStatusRestricted(当用户无法允许访问定位服务时)和kCLAuthorizationStatusDenied(当用户明确拒绝您的应用程序访问定位服务时)。在这两种情况下,适当的做法是通知用户(通过警报视图或其他方式)您的应用程序依赖于能够访问他们的位置,并且他们可能能够在“设置”应用程序中重新授予该访问权限.您也可以随时使用 CLLocationManager 类方法+authorizationStatus查看您的应用的授权状态。

    不幸的是,4.2 之前的版本都不可用,您需要使用 sosbom 的回答中提到的 +locationServicesEnabled 方法。

    【讨论】:

      【解决方案2】:

      阅读:Location Awareness Programming

      关键是这样的:

      确定位置服务是否可用每个基于 iOS 设备能够以某种形式支持定位服务,但 仍然存在可能无法提供位置服务的情况 可用:

      用户可以在设置应用程序中禁用定位服务。 用户可以拒绝特定应用程序的位置服务。这 设备可能处于飞行模式并且无法启动必要的电源 硬件。由于这些原因,建议您始终致电 之前CLLocationManager的locationServicesEnabled类方法 尝试启动标准或重大更改位置 服务。 (在 iOS 3.x 及更早版本中,检查 locationServicesEnabled 属性代替。)如果此类方法 返回 YES,您可以按计划启动位置服务。如果它返回 否,您仍然尝试启动定位服务,系统 提示用户确认是否应启用位置服务 重新启用。鉴于位置服务很可能被禁用 故意的,用户可能不欢迎这个提示。

      【讨论】:

      • 所以如果我不检查,当我尝试启动定位服务时,定位服务将简单地返回 0。但如果我检查然后尝试定位服务,应用程序会自动再次询问。跨度>
      • @Jim:再次阅读引用的最后一句话:“鉴于位置服务很可能被故意禁用,用户可能不欢迎此提示”。如果您检查并没有启用它们,请不要一直纠缠设备所有者。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多