Можете ли вы изменить настройки конфиденциальности Iphone программно в iOS7 или iOS8

У меня есть приложение, которое использует службы определения местоположения и фоновое обновление приложения, я хочу включить эти 2 предпочтения на страницу настроек моего собственного приложения, чтобы пользователь мог сделать это в одном месте, а не переходить в приложение настроек.

Возможно ли это в iOS7 или iOS8? Я знаю несколько приложений, которые это делают.


person Nupur Daddikar    schedule 19.08.2015    source источник
comment
Да, вы можете это сделать, просто если он отключен в настройках вашего приложения, не используйте код местоположения или фонового обновления, который может инициализировать ваши службы. Но в случае фонового обновления, если оно не отключено в настройках, оно попытается позвонить.   -  person iphonic    schedule 19.08.2015
comment
Привет, Нупур, был ли мой ответ полезен?   -  person Mithun Ravindran    schedule 20.08.2015


Ответы (1)


Первоначальное предупреждение, которое предложит получить службу определения местоположения для приложения, инициируется ОС, а не приложением. Это будет вызвано тем, что вы включили бы настройки на основе местоположения в своем приложении.

Но если пользователь отказывается от этого в первый раз, в соответствии с ОС пользователь предпочитает запрещать службу определения местоположения для этого конкретного приложения, и это конфиденциальность пользователей. Поскольку 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
comment
Спасибо, это имеет смысл - person Nupur Daddikar; 09.10.2015