ios7 ios8 定位兼容性问题解决方案

最近开发的app定位功能在ios8上能够正常运行,但是到了ios7的机器上就不能正常运行了,原因是两个系统的定位有些不一样,针对不同的系统是需要做一些处理的。一下是我的一些处理方法。

@property(nonatomic, strong) CLLocationManager * locMgr;
- (CLLocationManager *)locMgr
{
    if (_locMgr == nil) {
        self.locMgr = [[CLLocationManager alloc]init];
        self.locMgr.delegate = self;
    }
    return _locMgr;
}
- (void)init
{
    if ([CLLocationManager locationServicesEnabled]) {
        //IOS8以及以上版本需要设置,弹出是否允许使用定位提示
        if (IOS8_OR_LATER) {
            [self.locMgr requestAlwaysAuthorization];
        }
        [self.locMgr startUpdatingLocation];
        self.locMgr.distanceFilter = kCLDistanceFilterNone;
        self.locMgr.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
    } else {
        //提醒用户打开定位开关
        UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示?" message:@"亲!您还没有打开定位服务哦!请前往设置打开定位服务!" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
        [alert show];
    }
}

#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    //locations数组里边存放的是CLLocation对象,一个CLLocation对象就代表着一个位置
    CLLocation *loc = [locations firstObject];
    //维度:loc.coordinate.latitude
    //经度:loc.coordinate.longitude
    NSLog(@"纬度=%f,经度=%f",loc.coordinate.latitude,loc.coordinate.longitude);
    NSLog(@"%d",locations.count);

    LOCATION * loca = [[LOCATION alloc] init];
    loca.lat = [NSString stringWithFormat:@"%f",loc.coordinate.latitude];
    loca.lng = [NSString stringWithFormat:@"%f",loc.coordinate.longitude];
    self.defaultShopListModel.filter.location = loca;
    self.hotShopListModel.filter.location = loca;
    self.nearShopListModel.filter.location = loca;
    [self updateDatas];
    [self updateViews];

    //停止更新位置(如果定位服务不需要实时更新的话,那么应该停止位置的更新)
    [self.locMgr stopUpdatingLocation];
}

当然还需要在工程目录中设置一些

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 00:00:16

ios7 ios8 定位兼容性问题解决方案的相关文章

ios项目开发— iOS8 定位功能API改变

iOS8 定位新增功能 一.  Core Location framework的变化主要有以下几点:         1. 在定位状态中引入Always 和WhenInUse的概念.         2. 加入Visit monitoring的特性, 这类特性特别适合旅行类别的应用,当用户到达某个指定的区域内,monitor开始作用.         3.加入室内定位技术,增加CLFloor, 在室内可以得到楼层信息. 下面针对这三种分别详细的讲一下使用方法. 二..定位的种类分为: 持续的更新

IE浏览器兼容性问题解决方案

IE浏览器兼容性问题解决方案一.CSS常见问题 1.H5标签兼容性 解决方案:<script src="http://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> 2.元素浮动之后,能设置宽度的话就给元素加宽度,如果需要宽度是内容撑开的,就给它里边的块元素加上浮动float:left; 3.第一块元素浮动,第二块元素加margin-left值等于第一块元素宽度,在IE6下会有间隙问题 解决

浏览器兼容性问题解决方案之CSS,已在IE、FF、Chrome测试

当前主浏览器的核心是什么? 1) Trident:IE浏览器使用的内核,该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到目前的 IE7.Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器涌现(如 Maxthon.TheWorld .TT.GreenBrowser.AvantBrowser等). 2) Geckos: Netcape6开始采用的内核,后来的FF也采用了该内核,Geckos的特点是

iOS7,iOS8和iOS9的区别

iOS7,iOS8和iOS9的区别:iOS7.0 1.iOS 7是iOS面世以来在用户界面上做出改变最大的一个操作系统.iOS 7抛弃了以往的拟物化设计,而采用了扁平化设计. 苹果在重新思考 iOS 的设计时,更希望围绕 iOS 中深受人们喜爱的元素,打造一种更加简单实用而又妙趣横生的用户体验.最终,苹果优化了 iOS 的工作方式,并以此为基础重新设计了 iOS 的外观.之所以这样做,是因为能够服务于体验的设计才是出色的设计. 2.控制中心 控制中心为你建立起快速通路,便于你使用那些随时急需的控

iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃

今天在项目中遇到一个坑爹的 Crash , 在 iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃  iOS9不会 原因:苹果的BUG代码 解决:在视图消失之前把编辑状态设为NO -(void)viewDidDisappear:(BOOL)animated{    [superviewDidDisappear:animated];    self.shoppingBagTableView.editing = NO;  /** ios7 ios8 编辑状

iOS8定位与地图

iOS开发系列--地图与定位 转载:http://www.cnblogs.com/kenshincui/ 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看

IOS8定位无效问题

我的一个程序,以前都好用的,包括ios6,ios7,但是手机升级到iOS8后,xcode6编译运行,就不能正常工作了,也不报错.现象是进到设置里隐私-定位服务下面找到这个应用,设为总是允许,就可以正常获取地理信息,但是再重新编译运行,它又会变成这个未知状态. 琢磨后想起来以前重装应用再调用定位服务时会弹出授权对话框,但是IOS8怎么没弹呢,于是加入调用locationManager requestAlwaysAuthorization手动申请授权,然后你可以在didChangeAuthoriza

iOS8 定位失败问题

时间:2014-10-10 今天在开发的时候发现了一个iOS8的定位问题,执行操作之后,不会调用到定位之后的delegate方法中,然后我查看了一下手机上对应用的定位权限界面,发现我的应用的访问用户的地理位置的权限是空的,之后查了相关信息,得到以下解决方案: 1. Appdelegate中: CLLocationManager *locationManager; [UIApplication sharedApplication].idleTimerDisabled = TRUE; locatio

iOS8定位失败

今天在开发的时候发现了一个iOS8的定位问题,执行操作之后,不会调用到定位之后的delegate方法中,然后我查看了一下手机上对应用的定位权限界面,发现我的应用的访问用户的地理位置的权限是空的,之后查了相关信息,得到以下解决方案: 1. Appdelegate中: if (IOS_VERSION >=8) { locationManager = [[CLLocationManager alloc] init]; [locationManager requestAlwaysAuthorizatio