Как определить, отключено ли Safari на iPhone? - PullRequest
5 голосов
/ 15 июня 2010

Как определить, был ли Safari отключен родительским контролем на iPhone? Я знаю, что это возможно, потому что App X3Watch отказывается работать, пока Safari не отключен. Насколько я вижу, нет API для родительского контроля, так какой метод можно использовать для этого?

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

Я не проверял это, но это OS3.0 и выше, вы можете определить, может ли URL открываться любым приложением в системе, используя [[UIApplication sharedApplication] canOpenURL:myURL]. Бьюсь об заклад, он вернет NO, если Safari отключен.

0 голосов
/ 10 июля 2013

Вот моя попытка включить решение этого в контроллер представления. Необходимо использовать два параметра bool, потому что пользователь может открывать внешнюю программу независимо от safari при загрузке представления, но кнопка, для которой требуется safari, еще не открыта.

@implementation ViewController {
@private BOOL externalProgramOpened;
@private BOOL buttonPressed;
}

-(void) setExternalProgramOpened {
    // Only set to yes if we're trying to open safari
    if(buttonPressed) {
        externalProgramOpened = YES;
    }
}

-(void) notifyUserOfRestrictedAccess {

    if(externalProgramOpened == NO) {
            [[[UIAlertView alloc] initWithTitle:@"Safari Needs to be enabled!"
                                    message:@"It looks like the Safari browser is
                                              disabled. Please enable it 
                                              (Settings>General>Restrictions) in order to 
                                              continue."
                                   delegate:nil
                          cancelButtonTitle:@"Ok"
                          otherButtonTitles: nil] show];
    } else {
        externalProgramOpened = NO;
    }

    buttonPressed = NO;
}

-(void) viewWillAppear:(BOOL)animated {
    externalProgramOpened = NO;
    buttonPressed = NO;

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                          selector:@selector(setExternalProgramOpened)
                                          name:UIApplicationWillResignActiveNotification 
                                          object:nil];
}

-(void) viewWillDisappear:(BOOL)animated {

    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                          name:UIApplicationWillResignActiveNotification
                                          object:nil];
    [super viewWillDisappear:animated];

}

- (IBAction)buttonPressed:(id)sender {
    buttonPressed = YES;

    NSString * URL = *someURL*;

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];

    [self performSelector:@selector(notifyUserOfRestrictedAccess) withObject:self 
               afterDelay:.75];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...