您的位置:首页 > 移动开发 > IOS开发

CoreLocation的变化-iOS8

2016-02-18 15:00 543 查看
题外话:

很多时候,我们都要以归零的心态,变化的姿态面对每一天。新闻刚刚推送ApplePay 于2.18正式登录中国。今天一早在公司楼下seven-eleven买早餐,刚走到门前,看着门上贴着“Pay”的标示,心想太快了,走到办公室,一打开手机,一看app更新,大部分都以Apple Pay上线为重大更新亮点,如此这样,我该做些什么,像其他人无所事事的一样绑定银行卡?不能吧,我想这个框架在我做的APP中还没有使用,我该如何学一下使用,虽然不难,至少得去看一下。。。要不然又要被鄙视啦。。。你不进步,有人进步。不要在一个地方工作感觉太安逸啦,我们的年龄还不是选择安逸的时候。你不淘汰工作,工作会淘汰你。

回正题:CoreLocation的变化-iOS8

iOS8修改位置设置的内容

即:增加了一套状态(使用应用程序期间中/始终可用),所以以前的CLLcationManage的注册后,

Delegate 代理方法不响应了。

iOS8需要一下设置

在info.Plist中追加下面两个字段 (必须有,最少一个,内容是系统ALert的提示语String,提示语可为空)

NSLocationWhenInUseDescription(使用应用程序期间)

NSLocationAlwaysUsageDescription(始终)

查看一下是否开启定位 服务

if !CLLocationManager.locationServicesEnabled() {
debugPrint("定位服务尚未打开。设置->隐私-> 定位服务")
}


创建CLLocationManager对象

locationManager = CLLocationManager()
if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.NotDetermined {//kCLAuthorizationStatusNotDetermined
debugPrint("开始:定位服务还未授权")
locationManager.requestWhenInUseAuthorization()
}
locationManager.delegate = self
//控制定位精度
locationManager.desiredAccuracy = kCLLocationAccuracyBest
//控制定位服务更新频率:每隔多少米定位一次
locationManager.distanceFilter = 1
//启动所有定位硬件
locationManager.startUpdatingLocation()
//关闭stopUpdatingLocation


代理方法,用户授权允许应用程序使用位置信息时AuthorizationStatus状态改变

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
debugPrint(status.rawValue)
}


代理方法,获取位置信息

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let geocoder : CLGeocoder = CLGeocoder()
let newLocation : CLLocation = locations.first!
geocoder.reverseGeocodeLocation(newLocation) { (placemarks : [CLPlacemark]?, error: NSError?) -> Void in
for place in placemarks! {
debugPrint("位置信息:\(place.addressDictionary)")

}
}
}


OK完成

注:

当第一次安装App时,调用locationManager.requestWhenInUseAuthorization(),

如果定位未打开,提示如图所示:



定位打开:提示如图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: