懒惰地要求定位服务

Sha*_*ram 7 iphone location ios

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

jac*_*ash 5

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

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

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

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