Первоначальное предупреждение, которое предложит получить службу определения местоположения для приложения, инициируется ОС, а не приложением. Это будет вызвано тем, что вы включили бы настройки на основе местоположения в своем приложении.
Но если пользователь отказывается от этого в первый раз, в соответствии с ОС пользователь предпочитает запрещать службу определения местоположения для этого конкретного приложения, и это конфиденциальность пользователей. Поскольку Apple очень обеспокоена настройками конфиденциальности пользователя, чтобы пользователь мог снова принять эти настройки, он должен явно включить их снова в приложении настроек, и этого невозможно добиться на уровне приложения. Потому что это не имеет ничего общего с приложением и основано исключительно на ОС, и как разработчик мы не можем его переопределить.
Вместо этого мы можем определить текущую настройку конфиденциальности пользователя для местоположения, и если статус не имеет доступа, вы можете предложить пользователю предупреждение, в котором пользователь может напрямую изменить настройки после перехода в приложение настроек.
if([CLLocationManager locationServicesEnabled]){
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:ICLocalizedString(@"LocationServicesPermissionTitle")
message:ICLocalizedString(@"LocationPermissionGeoFenceMessage")
delegate:self
cancelButtonTitle:@"Settings"
otherButtonTitles:nil];
[alert show];
}
}
Делегат UIAlertView:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
[alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: UIApplicationOpenSettingsURLString]];
}
person
Mithun Ravindran
schedule
19.08.2015