ios8 关于定位的一些问题
2015-01-05 11:34
417 查看
在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
plaincopy
- (MKMapView *)locationMapView
{
if (_locationMapView == nil) {
_locationMapView = [[MKMapView alloc] init];
_locationMapView.frame = CGRectMake(0, 0, 0.5, 0.5);
_locationMapView.delegate = self;
_locationMapView.backgroundColor = JWDefaultBlueColor;
[[[UIApplication sharedApplication] keyWindow] addSubview:_locationMapView];
}
return _locationMapView;
}
[objc] view
plaincopy
- (void)deallocMapView
{
[_locationMapView removeFromSuperview];
_locationMapView = nil;
}
在定位完成移除mapView
为了让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
plaincopy
- (MKMapView *)locationMapView
{
if (_locationMapView == nil) {
_locationMapView = [[MKMapView alloc] init];
_locationMapView.frame = CGRectMake(0, 0, 0.5, 0.5);
_locationMapView.delegate = self;
_locationMapView.backgroundColor = JWDefaultBlueColor;
[[[UIApplication sharedApplication] keyWindow] addSubview:_locationMapView];
}
return _locationMapView;
}
[objc] view
plaincopy
- (void)deallocMapView
{
[_locationMapView removeFromSuperview];
_locationMapView = nil;
}
在定位完成移除mapView
相关文章推荐
- ios8 关于定位的一些问题
- 关于absolute定位的一些问题总结
- 关于google的location定位的一些问题(location为null)
- iOS 关于iOS8地图定位问题
- 关于百度定位申请应用AK的一些问题
- 关于百度地图iOS8的定位问题以及iPhone6 Plus黑框
- 关于百度api定位开发中出现的一些问题
- 关于新人定位现网问题的时候的一些想法
- 关于ios8不能定位问题 - 总是返回kCLAuthorizationStatusNotDetermined
- 关于iOS8之后定位问题
- 关于崩溃等问题的定位总结(使用qcc的一些方法来尝试)
- iOS8关于地图定位问题
- 绝对定位时关于bottom的参照点的一些问题
- IOS8 关于百度地图API的一些问题
- 关于升级到iOS8地图定位问题
- 关于google的location定位的一些问题(location为null)
- 关于CSS的定位问题,你需要注意的一些坑
- 绝对定位时关于bottom的参照点的一些问题
- 【转贴】关于ASPNET在IIS一些问题的经验总结
- 关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)