ios8 关于定位的一些问题

本文详细解析了苹果在iOS8上对定位功能的大规模优化,包括室内定位、常去地点统计、楼层支持等新特性。文章指导开发者如何在iOS8中正确配置和使用定位权限,以及在应用中实现精准定位的注意事项。通过实例展示了如何解决在使用地图视图时可能出现的问题,确保应用在iOS8环境下稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ios8上,很多开发者发现,定位不好使了,这是因为苹果在iOS8上对定位进行了大幅度优化和调整,可以支持室内定位,常去地点统计,楼层等


为了让app在ios8上也能使用定位功能,你需要:

1.在info.plist里添加

NSLocationWhenInUseUsageDescription,允许在前台获取GPS的描述

NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述(如果app需要在后台获取用户位置可以添加这个)


2.苹果在ios8里添加了2个关于定位的接口:

⓵requestWhenInUseAuthorization
⓶requestAlwaysAuthorization
在你需要使用定位功能地方,创建并初始化 CLLocationManager对象,并调用对应的上述的方法,比如:

在这里特别提醒下,很多人在网上查找文档,都有这样一句代码   [UIApplication sharedApplication].idleTimerDisabled TRUE;

如果没有必要的话,一定不要添加,因为这句代码的意思是:不允许你的app自动锁屏,这个一般是在视频或者音频app里才能用到,不然太费电,苹果审核也许会因为这个拒绝你的app


3.在CLLocationManager的回调方法- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status里,这样操作:



有些app可能要求精确定位,使用了mapView,在ios8以前是能正常使用的,但是在ios8上发现,mapView的delegate方法不会被调用,这是因为ios8上,如果你使用了mapView,必须设置mapView的大小,必须把它添加在视图上。

我是这样做的:

[objc]  view plain copy
  1. - (MKMapView *)locationMapView  
  2. {  
  3.     if (_locationMapView == nil) {  
  4.         _locationMapView = [[MKMapView alloc] init];  
  5.         _locationMapView.frame = CGRectMake(000.50.5);  
  6.         _locationMapView.delegate = self;  
  7.         _locationMapView.backgroundColor = JWDefaultBlueColor;  
  8.         [[[UIApplication sharedApplication] keyWindow] addSubview:_locationMapView];  
  9.     }  
  10.     return _locationMapView;  
  11. }  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. - (void)deallocMapView  
  2. {  
  3.     [_locationMapView removeFromSuperview];  
  4.     _locationMapView = nil;  
  5. }  

在定位完成移除mapView



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值