2010-06-15 19 views
5

Come si può rilevare se Safari è stato disattivato dal controllo genitori su iPhone? So che è possibile perché l'App X3Watch rifiuta di funzionare finché Safari non è disabilitato. Per quanto posso vedere, non esiste una API per i controlli parentali, quindi quale tecnica può essere utilizzata per questo?Come rilevare se Safari è disabilitato su iPhone

risposta

4

Non ho provato questo, ma è OS3.0 e versioni successive, è possibile rilevare se un URL può essere aperto da qualsiasi applicazione sul sistema utilizzando [[UIApplication sharedApplication] canOpenURL:myURL]. Scommetto che restituirà NO se Safari è disabilitato.

+0

Sì, l'ho provato e hai ragione. Grazie! – zorro2b

+2

Funziona ancora? Ho provato questo su iOS 6 (iPad 3), ma restituisce SÌ anche se Safari è disabilitato in Restrizioni. Tuttavia, se in realtà chiamo openURL :, Safari NON si apre se disabilitato, come previsto. – Michael

+2

Per rispondere alla mia domanda: [collegamento] (http://stackoverflow.com/questions/12771177/uiapplications-canopenurl-openurl-return-misleading-result) – Michael

0

Ecco il mio tentativo di includere la soluzione in un controller di visualizzazione. I due bool devono essere utilizzati perché un utente può aprire un programma esterno indipendentemente da Safari quando viene caricata la vista, ma il pulsante che ha bisogno di Safari non è stato ancora aperto.

@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]; 
} 
Problemi correlati