2012-06-16 2 views
1

Я пытаюсь создать приложение, в котором будет проверяться, включены ли службы определения местоположения. Если он не включен, он будет запрашивать всплывающее окно, но при этом он будет продолжать поиск местоположения, но не запрашивает его. Как только службы определения местоположения будут включены, он продолжит свой процесс.постоянно проверяют, включены ли службы определения местоположения в ios

Как это сделать ???

+0

, пожалуйста, примите к сведению ответ, если вы найдете его полезным и сможете решить свой вопрос. – Raptor

ответ

0

Вы можете проверить наличие служб определения местоположения с помощью этого кода:

MKUserLocation *userLocation = map.userLocation; 
    BOOL locationAllowed = [CLLocationManager locationServicesEnabled]; 
    BOOL locationAvailable = userLocation.location!=nil; 

    if (locationAllowed==NO) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                 message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } else { 
     if (locationAvailable==NO) 
      [self.map.userLocation addObserver:self forKeyPath:@"location" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; 
    } 
+0

Спасибо. Я попробую это. – khushalbokadey

+0

Но этот код проверяет наличие служб местоположения только один раз, после чего он не будет проверять. Если изначально службы определения местоположения отключены, а затем он включен, а затем пользователь возвращается в приложение, приложение не будет действовать соответствующим образом. – khushalbokadey

+0

Но вы можете вызывать этот метод каждый раз, когда вы хотите проверить службы в своем приложении. –

0

Добавить в .h файл INT счетчика;

В методе viewDidLoad вашего взгляда добавит это, как он будет проверять каждый второй и может увеличить счетчик:

[NSTimer scheduledTimerWithTimeInterval:1.0  
          target:self 
          selector:@selector(checkLocationMangerEnabled:)  
          userInfo:nil  
          repeats:YES]; 

counter = 0; 

Теперь селектор будет:

-(void)checkLocationMangerEnabled:(id)sender 
{ 
    if([CLLocationManager locationServicesEnabled]) 
    { 
     //here location is enabled 
    } 
    else 
    { //Not enabled 
    if(counter == 60) // alert will showed in every 1 min u can increase or decrese 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 
    counter++; 
    } 
} 
1

Вы не можете продолжать получать место, если место службы отключены.

Если вы хотите продолжить поиск места быть уверены, что услуга позволит путем проверки

[CLLocationManager locationServicesEnabled] 

Если включено, запустите обновление местоположения

[locationManager startUpdatingLocation]; 

Тогда в

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation { 
    [locationManager stopUpdatingLocation]; // This will stop to check the location 
} 

удалите этот код, чтобы по-прежнему проверить местоположение [locationManager stopUpdatingLocation];, но это не t он лучше всего подходит, обязательно прочитайте apple documentation for the policy of getting the location

Смежные вопросы