2015-08-19 3 views
1

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

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

+0

Да, вы можете сделать, это только если отключено в вашем предпочтении приложения не использовать местоположение или фоновый код Обновить который может быть Инициирования своих услуг. Но в случае фонового обновления, если он не отключен через «Настройки», он попытается позвонить. – iphonic

+0

Привет, Нупур, был ли мой ответ полезным? –

ответ

0

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

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

Спасибо, это имеет смысл –