iOS8 定位新增功能
来源:互联网 发布:宁波java软件公司排名 编辑:程序博客网 时间:2024/06/05 10:46
从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; } }
- iOS8 定位新增功能
- iOS8 定位新增功能
- iOS8 定位新增功能
- iOS8 定位新增功能
- 关于ios8定位服务的新增特性
- iOS8 中新增 UIResponder 功能 - UserActivityState
- iOS8中webview添加定位功能
- iOS百度地图定位功能iOS8+
- IOS8定位
- iOS8定位
- IOS8定位
- iOS8定位
- IOS8 定位
- IOS8 新增UIAlertController类
- ios8新增一些特性
- iOS8新增的API
- ios8定位问题,以及在iphone点击设置隐私定位功能直接崩溃的问题
- iOS8定位问题,在iPhone设置中点击开启定位功能直接崩溃的问题
- oracle客户端备份导入导出数据库(exp,imp)
- PHP获取客户端IP地址
- EXPORT_SYMBOL与EXPORT_SYMBOL_GPL
- matplotlib 2D绘图基础
- Unity Transform(变换)和Input
- iOS8 定位新增功能
- 【 Android】handler异步消息处理机制完全解析,带你从源码的角度彻底理解
- TI的ZigBee协议栈不同版本的区别,如何选择合适的协议栈进行产品开发
- Hibernate基础学习总结
- Linux命令之mpstat
- 阐明iOS证书和provision文件
- 使用 Eclipse 的 SVN 插件创建项目的主干/分支/标签
- 在 CentOS 上安装Erlang
- 编辑手账 20141217 南京「哀悼日」 容認できぬ一方的な反日宣伝