CoreLocation,在我们这里讨论的是一个最常用的东西,就是用Location Manger获取用户当前的位置。

整个的来说非常简单。只要这样:

import CoreLocation

需要使用整个框架,那么引入整个框架就是必须的。然后需要在你的类里实现一个protocol。就是CLLocationManagerDelegate,并在代码中实现protocol里的相关方法。分别是这样喝这样:

class ViewController: UIViewController, CLLocationManagerDelegate 

    //MARK: CoreLocationManagerDelegatefunc locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){println("get location")var location:CLLocation = locations[locations.count-1] as CLLocationif (location.horizontalAccuracy > 0) {self.locationManager.stopUpdatingLocation()println(location.coordinate)self.textLabel.text = "latitude \(location.coordinate.latitude) longitude \(location.coordinate.longitude)"}}func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {println(error)self.textLabel.text = "get location error"}

这些代码的功能也很简单。获取用户的经度和纬度,之后在界面的UILabel中显示出来。

在viewWillAppear中开始获取地理位置,在viewDidDisappear里停止。手机费电的几个地方就包括地理位置过度频繁的更新这一项。所以,一定要记得不用的时候就不要再请求系统的GPS数据。否则,用户在设置的费电大户里是看得到的。

    override func viewWillAppear(animated: Bool) {super.viewWillAppear(animated)self.locationManager.startUpdatingLocation()}override func viewDidDisappear(animated: Bool) {super.viewDidDisappear(animated)self.locationManager.stopUpdatingLocation()}

只有这些代码还是没有办法工作的。因为,在iOS8里修改了政策。Look here

if self.locationManager.respondsToSelector("requestAlwaysAuthorization") {println("requestAlwaysAuthorization")self.locationManager.requestAlwaysAuthorization()}

这个是为了兼容iOS7和iOS8的代码,加入了一个判断。在iOS8中需要询问用户是否同意使用位置信息,否则的话该功能不可用。那么加这个就可以么?NO!!!还需要在,这里就是重点了。在plist文件里配置一个选项。

说到具体的配置有两个,分别是:requestWhenInUseAuthorization()和requestAlwaysAuthorization()这两个请求方法。一个是用户使用的时候才用到定位,一个是一直在后台获取更新的定位信息。最后的一个在一定的时候会触发一个系统的提醒,说这个APP一直在后台获取你的位置信息是否允许之类的。这两个请求方法对应的plist配置也不一样,分别是NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription。至于在plist添加的方法,就是在plist中添加一个键值对,然后把请求允许对应的Key值复制粘贴进去就可以了。value值是什么都可以,这个值会在请求允许的对话框中显示出来给用户看。总之是你自己定的。

运行你的APP,你会看到请求提示了:

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4147165.html

Swift使用CoreLocation,你必须要看这一篇相关推荐

  1. OpenStack入门科普,看这一篇就够啦

    OpenStack入门科普,看这一篇就够啦 科技百分百 2019-07-06 10:06:00 作者 | 小枣君 来源 | 鲜枣课堂 大家好,我是小枣君. 最近几年,OpenStack这个词开始频繁出 ...

  2. linux防火墙伦堂,「linux专栏」自从看了这篇文章,我彻底搞懂了selinux和防火墙...

    很多网友提到linux的防火墙就犯难,现在又多出一个selinux,愈加分不清了.曾几何时,小编也是如此,不过当你看完这篇文章之后,再也无需为此犯难了. 何为SELinux 简单来书,SELinux( ...

  3. api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)

    如何轻松打造百亿流量API网关?看这一篇就够了(上) 上篇整体描述了网关的背景,涉及职能.分类.定位环节,本篇进入本文的重点,将会具体谈下百亿级流量API网关的演进过程. 准备好瓜子花生小板凳开始积累 ...

  4. 我就不信看完这篇你还搞不懂信息熵

    我就不信看完这篇你还搞不懂信息熵 https://mp.weixin.qq.com/s/7NrB0UtmELXD3UNO3C6jGA 让我们说人话!好的数学概念都应该是通俗易懂的. 信息熵,信息熵,怎 ...

  5. mos管开关电路_MOS管的知识,看这一篇就可以了

    原标题:MOS管的知识,看这一篇就可以了 今天的文章简单总结一下MOS管,如下是本文目录. ▉ 场效应管分类 场效应管分为结型(JFET)和金属-氧化物-半导体型(MOSFET)两种类型. JFET的 ...

  6. python装饰器原理-看完这篇文章还不懂Python装饰器?

    原标题:看完这篇文章还不懂Python装饰器? 1.必备 2.需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作.redis调用.监控API等功能.业务部门 ...

  7. 看完这篇文章之后,终于明白了编译到底怎么回事。

    看完这篇文章之后,终于明白了编译到底怎么回事. 1 对于同一个语句,有如下三种:高级语言.低级语言.机器语言的表示 C语言  a=b+1; 汇编语言  mov -0xc(%ebp),%eax add ...

  8. linux shell find depth,搞定 Linux Shell 文本处理工具,看完这篇集锦就够了

    原标题:搞定 Linux Shell 文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕 ...

  9. 看完这篇文章之后,终于明白了编译到底怎么回事

    看完这篇文章之后,终于明白了编译到底怎么回事. 1 对于同一个语句,有如下三种:高级语言.低级语言.机器语言的表示 C语言  a=b+1; 汇编语言  mov -0xc(%ebp),%eax add ...

  10. html5 游戏前景怎么样,独家 HTML5游戏目前究竟怎么样?看完这篇文章,你或许会清晰很多...

    原标题:独家 HTML5游戏目前究竟怎么样?看完这篇文章,你或许会清晰很多 文/DataEye CEO 汪祥斌 从5月份白鹭的10亿估值,到最近悟空间.山水地.火缘步甲的千万级以上的融资,我们可以感受 ...

最新文章

  1. 众多支持者助力BCH第二次硬分叉升级
  2. SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户
  3. scala的传值参数和传名参数
  4. SAP CRM product customizing下载的第二个队列
  5. 这道题号称无人能解!300多年来无一人答对,却让这群人这么简单就解出来了?...
  6. 剑桥大学的下午茶,为何能喝出六十位诺贝尔奖获得者?
  7. python os.path模块常用方法详解
  8. 《回答sort一例》-linux命令五分钟系列之二十八
  9. 大数据平台技术可以提供哪些服务
  10. 《操作系统真象还原》——0.17 先有的语言,还是先有的编译器,第1个编译器是怎么产生的...
  11. music 算法 c语言,频率估计方法——MUSIC和ROOT-MUSIC算法(附代码)
  12. Redis入门指南-2
  13. 超酷汇编教程-- 简明x86汇编语言教程(1)
  14. FireFox把Gmail变成大容量网络硬盘
  15. 华为员工频繁自杀原因何在?
  16. 博物馆 库房rfid_博物馆RFID综合管理解决方案
  17. vue实用echart饼图legend显示百分比
  18. 鸿蒙操作系统pc,不负期待!鸿蒙操作系统将于6月2日正式发布,你的手机更新了吗?...
  19. eclipse的启动失败提示发生了错误,请参阅日志文件
  20. bash(CVE-2014-6271) shellshock-破壳漏洞复现

热门文章

  1. 虚拟主机选择php版本,虚拟主机的php版本如何选择
  2. vue 判断两对象是否一致_你的.vue文件就已经是你的文档了
  3. wxwidget编译安装_wxWidgets的安装编译、相关配置、问题分析处理
  4. 栈 php 验证格式,表单验证 - 《Biny - 高性能轻量级PHP框架》 - 书栈网 · BookStack...
  5. java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)
  6. 创业冲突的五种解决方法是_不会说话,不懂处理人际冲突怎么办?《沟通的艺术》5步教会你...
  7. java情人节_情人节写给女朋友Java Swing代码程序
  8. TVM:在树莓派上部署预训练的模型
  9. fifo页面置换算法设计思路_千万级并发!如何设计一个多级缓存系统?
  10. android layout.inflater,Android - LayoutInflater