2012-10-07 8 views
16

Desde iOS6, no puedo decir si la aplicación puede ejecutar Safari o no.UIApplication's -canOpenURL: -openURL: resultado engañoso

Si Safari está restringido en el dispositivo (Ajustes> General> Restricciones), no ocurre nada al intentar abrir una URL, y no hay ninguna indicación de lo que salió mal:

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
[[UIApplication sharedApplication] canOpenURL:url]; // Returns YES 
[[UIApplication sharedApplication] openURL:url]; // Returns YES 

Sin embargo, Safari hace no lanzamiento, y el usuario se queda preguntándose por qué mis botones están "rotos".

Esto me parece un error así que archivé un radar # 12449905.

¿Hay alguna otra forma de resolver este problema?

+0

¿Los radares son públicos? No puedo encontrar ningún botón de "búsqueda" al lado de aquél para buscar los radares que presenté ... – jcayzac

+0

@jcayzac No, pero lo agregué a openradar: http://openradar.appspot.com/12449905 – hwaxxer

+0

¿Funciona con 'https : // '? Como es un error, podría decidir al azar trabajar con un esquema de URL diferente sin ningún motivo aparente. – Greg

Respuesta

2

Si se trata de un error de Apple, parece que lo que debe hacer es programarlo. Una vez que el usuario hace clic en el botón, siempre se puede escribir algo como esto:

[self performSelector:@selector(notifyUserOfRestrictedAccess) withObject:self afterDelay:.5]; 

En el delegado de la aplicación, se puede establecer una propiedad como:

- (void)applicationWillResignActive:(UIApplication *)application { 
    self.openingExternalProgram = YES; 
} 

En el controlador de vista, crear el método como este:

-(void) notifyUserOfRestrictedAccess { 

    if (!appDelegate.openingExternalProgram) { 
     // Message the user via UIAlertView about restricted Safari access 
    } 
    appDelegate.openingExternalProgram = NO; 
} 

Estoy seguro de que hay mejores maneras, pero al menos no tienes que esperar en Apple.

+0

Gracias ... escuchar la notificación es definitivamente una mejor manera. –

Cuestiones relacionadas