IOS8 解决定位服务无法使用

来源:互联网 发布:电子画册制作软件 编辑:程序博客网 时间:2024/05/21 10:21


  1.在需要启用定位服务的地方增加以下方法


#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)


- (void)startLocation {


    CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

    if (status == kCLAuthorizationStatusNotDetermined) {

        [self checkInIOS8];

    }else if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status ==kCLAuthorizationStatusAuthorizedAlways) {

        [self.locationManager startUpdatingLocation];

    }

}


- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    switch (status) {

        case kCLAuthorizationStatusAuthorizedAlways:

        case kCLAuthorizationStatusAuthorizedWhenInUse:


            [self startLocation];

            break;

        case kCLAuthorizationStatusNotDetermined:

            [self checkInIOS8];

        default:

            break;

    }

}

-(void)checkInIOS8{  //这个方法是区别IOS8和IOS7的。因为这个APIIOS7没法使用

    if(IS_OS_8_OR_LATER){

      

      //当执行这个方法,APP退到后台,屏幕上会提示你正在使用地理位置服务,不友好

      //当决定使用此方法的时候,需要在xxx.plist中添加一行关键字 NSLocationWhenInUseUsageDescription

        [self.locationManager requestWhenInUseAuthorization];


       //当执行这个方法,APP退到后台不会有任何提示

//当决定使用此方法的时候,需要在xxx.plist中添加一行关键字 NSLocationAlwaysUsageDescription

[self.locationManager requestAlwaysAuthorization];


        //以上方法取一个就行。

    }

}


3.完成以上步骤,即可使用定位服务了


0 0