Когда вы нажимаете кнопку Не разрешать
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
будет вызываться с kCLAuthorizationStatusDenied
исключением. Вы можете написать свой внутри него.
Также см .:
kCLAuthorizationStatusNotDetermined = 0, // User has not yet made a choice with regards to this application
kCLAuthorizationStatusRestricted, // This application is not authorized to use location services. Due
// to active restrictions on location services, the user cannot change
// this status, and may not have personally denied authorization
kCLAuthorizationStatusDenied, // User has explicitly denied authorization for this application, or
// location services are disabled in Settings
kCLAuthorizationStatusAuthorized // User has authorized this application to use location services
Пример:
если пользователь нажимает на разрешить, то
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[self refreshYourView];
}
Если клики не позволяют
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
if ([error code]== kCLAuthorizationStatusDenied)
{
UIAlertView *alert;
alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"User has clicked don't allow button." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
РЕДАКТИРОВАТЬ
Альтернатива: вы можете отобразить предупреждение, в котором пользователю предлагается разрешить доступ к местоположению, включив службу определения местоположения с Settings
.
Вы можете использовать это на iOS 5.0 и более поздних версиях:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
в вашем приложении, чтобы открыть приложение Настройки.