background image

iOS6 定位服务编程详解

    现在的移动设备很多都提供定位服务,使用 iOS 系统的 iPhone、iPod Touch 和 iPad 都可
以提供位置服务,iOS 设备能提供 3 种不同途径进行定位:Wifi, 蜂窝式移动电话基站, 
GPS 卫星。

    iOS 不像 Android 系统在定位服务编程时,可以指定采用哪种途径进行定位。iOS 的
API

 

把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行

定位的,iOS 系统会根据设备的情况和周围的环境,采用一套最佳的解决方案。这个方案
是这样的,如果能够接收 GPS

 

信息,那么设备优先采用 GPS 定位,否则采用 Wifi 或蜂窝

基站定位,在 Wifi 和蜂窝基站之间优先使用 Wifi,如果无法连接 Wifi 才使用蜂窝基站定
位。

    总体来说 GPS 定位优点是准确、覆盖面广阔,缺点是不能被遮挡(例如:在建筑物里
面收不到 GPS 卫星信号)、GPS 开启后比较费电。蜂窝基站不仅误差比较大,而且会耗费
用户流量费。而 Wifi 定位是最经济实惠的。

    定位服务编程

    定位服务在 iOS 6 之后 API 没有太大的变化,主要使用 CoreLocation 框架,定位时候主
要使用 CLLocationManager、CLLocationManagerDelegate 和 CLLocation。CLLocationManager

 

是定位服务管理类它能够给我们提供获得 设备的位置信息和高度信息,也可以监控设备
进入或离开某个区域,它还可以帮助获得设备的运行方向等。CLLocationManagerDelegate 
是 CLLocationManager 类委托协议。CLLocation 类是封装了位置和高度信息。

    在定位服务的应用中,第一次请求获得位置信息时候,系统会提示用户是否允许开启
定位服务。用户所在的位置是比较私密的信息,应用获取这些信息用户是有知情权和否定
权的。如果应用在用户不知情的情况下,而获得用户的位置信息,这在某些国家是违法的
行为。

    

选择 不允许 ,定位服务就无法获得位置信息了,如果想改变这些设置可以在系统设

置应用中开启或关闭。

    

我们可以关闭所有的定位服务,只需要把最上面的 定位服务 开关控件关闭就可以了 。

下面的具体应用也可以关闭和开启。

    下面我们通过一个案例介绍一下使用定位服务编程,在应用启动时候启动,进入画面
时候会获得位置信息,并显示在对应的文本框中,如果设备位置发送变化,也会重新会
的位置信息,并更新对应的文本框。

    首先要实现定位服务的案例,需要为工程引入 CoreLocation 框架,添加具体步骤是选
择工程中的 TARGETS→WhereAmI→Build Phases→Link Binary With Libraries,选择右下角

的 +”按钮,打开框架和库选择对话框