你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS8定位問題解決方案

iOS8定位問題解決方案

編輯:IOS開發綜合

1、修改info

新增Key: NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription ,這兩個Key的值將分別用於描述應用程序始終使用和使用期間使用定位的說明,這些說明將顯示在用戶設置中。 

info新增鍵值對如下 : 


應用程序說明參見微信:

2、CLLocationManager初始化

iOS8CLLocationManager新增實例方法 requestWhenInUseAuthorization和requestAlwaysAuthorization,需要在初始化時根據需要調用。

 

if([CLLocationManager locationServicesEnabled]){
  self.locationManage = [[CLLocationManager alloc] init];
  self.locationManage.delegate = self;
  //定位頻率,每個多少米定位一次
  self.locationManage.distanceFilter = 200;
  //設置定位精度
  self.locationManage.desiredAccuracy = kCLLocationAccuracyBestForNavigation;//kCLLocationAccuracyBest;
  //啟動跟蹤定位
  [self.locationManage startUpdatingLacation];
  if (SYSTEM_VERSION >= 8.0) {
      //使用期間
      [self.locationManage requestWhenInUseAuthorization];
      //始終
      //or [self.locationManage requestAlwaysAuthorization]
  }
    }

3、代理(  CLLocationManagerDelegate  )

//定位失敗

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

{

    [MBHUDUntil hideAllHUDForView:self.window];

    

    if (![SharedData shareInstance].isMB == NO) {

        [MBHUDUntil showHUDToWindowWithText:@"地圖定位失敗,請確認您已允許本程序開啟定位服務"];

    }

}

 

// 跟蹤定位代理方法,每次位置發生變化即會執行(只要定位到相應位置)

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

     //如果不需要實時定位,使用完即使關閉定位服務

  [_locationManager stopUpdatingLocation];

}

新增下面的代理方法:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
  switch (status) {
    case kCLAuthorizationStatusNotDetermined:
      if ([self.locationManage respondsToSelector:@selector(requestAlwaysAuthorization)])
      {
        [self.locationManage requestWhenInUseAuthorization];
      }
      break;
    default:
    break;
  }

}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved