从iOS诞生之日起,系统便配带了定位功能,随着无线互联网的需求,移动功能的日新月异的变化,以及iOS的不断升级,定位功能都有不断的更新,自iOS7加入了iBeacon,为无线移动推送提供了更多的变数以后,在iOS8里面定位功能也有不俗的表现。
Core Location framework的变化主要有以下几点:
1. 在定位状态中引入Always 和WhenInUse的概念。
2. 加入Visit monitoring的特性, 这类特性特别适合旅行类别的应用,当用户到达某个指定的区域内,monitor开始作用。
3.加入室内定位技术,增加CLFloor, 在室内可以得到楼层信息。
下面针对这三种分别详细的讲一下使用方法。
a.定位的种类分为:
持续的更新:location, background location, ranging (Always/WhenInUse work)
监视类的更新:region monitoring, significant location changes (Always work)
其中持续的后台位置更新,在程序前台的时候发起的,WhenInUse模式也可以得到正确的地理位置更新,但是如果是类似于从后台被唤起这种服务,则需要使用Always authorization
c. 增加了跳转到privacy的link: UIApplicationOpenSettingsURLString当需要提示关闭了定位功能的用户使用定位的时候可以给通过如下的方式跳转到设定画面:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: UIApplicationOpenSettingsURLString]];
e. kCLAuthorizationStatus,由原来的kCLAuthorizationStatusAuthorized,变为kCLAuthorizationStatusAuthorizedAlways和kCLAuthorizationStatusAuthorizedWhenInUse
具体的使用方法:
A. 决定是否开启后台模式:在Target->capsbilities->backgourn modes
B. 在plist中增加WhenInUse/Always的提示文字,使用NSLocationWhenInUseUsageDescription /NSLocationAlwaysUseUsageDescription
C. 请求不同的服务:
地理位置变化:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation]
监听region:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
CLCircularRegion *region = [[CLCircularRegion alloc]...];
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startMonitoringForRegion:region];
获取地理位置并监听region:
在plist里同时设置NSLocationWhenInUseUsageDescription和NSLocationAlwaysUseUsageDescription,调用方式可以参考上面,但是需要注意的是,always的时候可能需要对模式进行判断。
if (authorizationStatus == kCLAuthorizationStatusDenied || authorizationStatus == kCLAuthorizationStatusWhenInUse) {
// TODO:do what you want e.g. goto setting view
}
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startMonitoringForRegion:region];
D: 集成的时候可以使用responsToSelector来避免iOS7.和iOS8api不同引发的错误。
E: 对于只是在MKMapView和Html5中使用的定位同样需要在plist中对提示增加自定义。
@interface CLLocationManager (CLVisitExtensions)
- (void)startMonitoringVisits NSAVAILABLE(NA, 80); // 开启监视
- (void)stopMonitoringVisits NSAVAILABLE(NA, 80); // 停止监视
当设备到达指定的地点时,系统会调用下面的方法来通知。
- (void)locationManager:(CLLocationManager *)manager didVisit:(CLVisit *)visit; 具体可以拿到的信息。 @interface CLVisit : NSObject @property (nonatomic, readonly, copy) NSDate *arrivalDate; @property (nonatomic, readonly, copy) NSDate *departureDate; @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; // center of region @property (nonatomic, readonly) CLLocationAccuracy horizontalAccuracy;
使用功能:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startUpdatingLocation]
<h5 500;="" color:="" #333333;\"="" style="font-size: 20px; margin: 0px; padding: 0px; font-weight: normal; letter-spacing: 0em; color: rgb(1, 35, 49); word-wrap: break-word !important;">回调:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { for (CLLocation *newLocation in locations) { CLFloor *floor = newLocation.floor; NSInteger level = floor.level; } }
相关推荐
在iOS开发中,实现基本的定位功能是许多应用的核心需求,尤其对于导航、社交和生活服务类应用来说至关重要。本教程将介绍如何使用Objective-C来实现这一功能,主要涉及`CLLocationManager`、`CLLocation`和`...
总之,“iOS定位的demo”项目应该包含了以上提到的所有知识点,并通过实际代码展示了如何在应用中集成和使用这些功能。通过学习和分析这个demo,开发者可以掌握iOS定位服务的基本用法,并为自己的应用添加相关功能。
在iOS开发中,地图定位是一项基础且重要的功能,它允许用户获取当前位置信息并进行相关操作。本Demo,"ios 地图定位 demo",旨在帮助开发者了解如何在iOS应用中集成地图定位服务,以实现基本的地图定位功能。下面将...
在iOS系统中,后台定位是一项重要的功能,尤其对于那些依赖实时地理位置信息的应用,如导航、健身追踪或社交应用。在iOS 8版本中,苹果公司对后台定位服务进行了优化,以提供更稳定、高效且节能的体验。以下将详细...
这个“iOS Map 定位 Demo”提供了实现这一功能的实例代码,帮助开发者理解如何在自己的应用中集成苹果的地图服务并获取用户的位置信息。接下来,我们将深入探讨相关知识点。 首先,我们需要导入必要的框架。`...
在iOS应用开发中,地图定位和签到功能是常见的需求,尤其在企业级应用中,如钉钉。本文将深入探讨如何实现iOS上的地图定位签到及离线签到功能,基于提供的资源"ios-地图定位签到及离线签到功能实现.zip"。 首先,...
一、iOS定位服务基础 1. Core Location框架:苹果提供了一个名为Core Location的框架,它是iOS、watchOS和tvOS中处理地理位置信息的核心组件。它允许开发者获取用户的实时位置、方向、速度等信息,同时还能管理位置...
在iOS开发中,苹果提供了内置的Core Location框架,使得开发者能够轻松地集成定位功能到自己的应用中。这个框架允许我们获取设备的地理位置信息,包括经纬度、海拔、速度和方向等。下面我们将深入探讨如何使用iOS...
一、iOS定位服务 iOS设备支持GPS、Wi-Fi、蜂窝数据和iBeacon等多种定位技术,通过Core Location框架提供服务。开发者可以使用Core Location框架获取用户的位置信息,包括经纬度坐标、海拔、速度和方向。为了保护用户...
iOS的定位服务是系统提供的一项核心功能,允许应用程序获取用户的地理位置信息。在iOS 15.0中,苹果进一步强化了对用户隐私的保护,同时提升了定位服务的准确性。location-cleaned驱动就是这一改进的关键,它在保证...
在iOS系统中,地理位置服务是通过Core Location框架提供的,它允许开发者获取用户的实时位置信息,进行定位、跟踪以及路径规划等功能。在这个“ios-iOS 系统定位CLLocation,周边范围查询,平均速度.zip”压缩包中,...
在iOS开发中,地图定位是不可或缺的功能之一,它允许用户获取到设备的当前地理位置信息,如城市、街道以及精确的经纬度坐标。本教程将详细讲解如何在iOS应用中实现这一功能。 首先,我们需要导入CoreLocation框架,...
在iOS开发中,实现“简易定位器”功能主要涉及到苹果的Core Location框架,这是一个用于获取设备地理位置信息的强大工具。这个“ios-简易定位器.zip”压缩包可能包含了一个简单的iOS应用示例,用于演示如何使用Core ...
在iOS开发中,GPS定位是实现许多应用功能的关键部分,比如地图导航、位置分享、周边服务搜索等。本文将深入探讨如何在iOS中利用GPS获取地理位置的经纬度、当前所在城市以及详细地址。 首先,我们需要引入核心位置...
在iOS开发中,苹果提供了内置的定位服务框架Core Location,使得开发者可以轻松地在应用程序中集成定位功能。本文将深入探讨iOS自带的定位服务,并基于提供的`mapViewController`这一文件名称,推测这是一个与地图和...
在iOS开发中,获取设备的地理位置信息是一项常用的功能,它涉及到多个系统框架和服务,包括Core Location框架。这个压缩包文件“CustomLocation”可能包含了自定义定位的实现代码或示例,帮助开发者理解如何准确地...
在iOS系统中,定位服务是应用获取用户地理位置信息的关键功能,对于导航、社交、天气预报等各类应用都至关重要。"location-cleaned 定位 ios14.1 最新驱动-iOS专用"是一个针对iOS 14.1版本的特定驱动程序,主要负责...
在iOS系统中,定位服务是不可或缺的一个功能,它允许应用获取设备的地理位置信息,从而提供各种基于位置的服务。"location-cleaned"项目针对iOS 14.0版本提供了最新的驱动程序,确保用户能够准确、安全地使用定位...
### Xcode模拟器下载地址(iOS 8 - iOS 12) #### 一、Xcode模拟器概述 Xcode 是苹果公司为开发者提供的官方集成开发环境(IDE),它支持多种编程语言,包括Objective-C、Swift等,主要用于开发iOS、macOS、...
在iOS开发中,集成百度地图服务是一个常见的需求,特别是在实现定位和反地理编码功能时。以下将详细讲解如何实现这个过程。 首先,我们要在百度地图开放平台(http://lbsyun.baidu.com/)注册一个账号,并创建一个...