懒惰地要求定位服务

时间:2012-04-13 06:15:04

标签: iphone ios location

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

1 个答案:

答案 0 :(得分:5)

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

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

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

我已经证明,位置服务仍然只在您尝试转换位置的时刻请求权限,就像在之前的SDK中一样。也许检查你的代码,也许粘贴一些,这样我们就可以了解更多细节。 :)