7

当我第一次安装并启动我的应用程序时,它会立即询问位置服务,即使尚未调用 startUpdatingLocation。那时我什至还没有分配 CLLocationManager 实例。我希望在我实际拨打电话后懒惰地完成这个提示,这样用户就不会盲目地关闭它。这个流程最近是否随着 iOS 的变化而改变?我记得它曾经被懒惰地问过。我正在使用 5.1 固件。

4

1 回答 1

5

那很有意思。我测试了您的假设,甚至没有分配位置管理器,但出现了 iOS 位置权限对话框。我尝试了以下故障排除。在每一步之后,我在设备上运行项目,我只能让位置弹出窗口出现在最后一步。

  • 启动一个新应用
  • 需要 info.plist 中的位置服务
  • 在 info.plist 中需要 gps
  • 将 CoreLocation 链接到项目
  • 将核心位置导入标题
  • 为位置管理器创建和综合属性
  • 向 CLLocationManager 询问 +authorizationStatus
  • 向 CLLocationManager 询问 +locationServicesEnabled
  • alloc 初始化一个 CLLocationManager 实例
  • 告诉 CLLocationManager 开始更新位置。

只有最后一步才出现提示。为了确保我什至创建了一个视图控制器,它推送了第二个视图控制器,该控制器初始化了一个 CLLocationManager 并开始更新位置。只有在推送第二个视图控制器时才会出现权限弹出窗口。这都是在 5.1 上运行的最新 Xcode。

我已经表明,位置服务仍然只在您尝试打开位置的确切时刻请求许可,就像在以前的 SDK 中所做的那样。也许检查您的代码,也许在此处粘贴一些代码,以便我们更详细地了解。:)

于 2012-04-13T21:40:57.417 回答