最近在写学校里一个项目的App,主要是手机地理位置信息,按照iOS 7版本的调用办法写代码会出现一个诡异的问题——编译器不报错,代码也没错,亦不存在警告,但是运行程序的时候无法输出地理位置信息。尝试以前从网上获得的某GPS定位转换器发现编译也能通过,但是无法获取地理位置信息,本以为是委托设置有问题,后来发现其实是iOS 8 SDK引起的问题。
iOS针对定位提出了新的要求,在这之前,只要有请求地理位置数据的操作,iOS将会弹出一个框要求用户接受或者拒绝请求,但是iOS 8默认是没有的,所以需要自行添加:
1、在info.plist
中添加下面两个key,布尔类型,值为true:
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
2、在[manager startUpdatingLocation];
前添加代码:
[manager requestAlwaysAuthorization];
再次构建项目你就能够看到下面的请求啦。