Chiama l’app * Impostazioni * ufficiale dalla mia app su iPhone

A un certo punto nella mia app, vorrei redirect l’utente all’app Impostazioni ufficiale. Se ansible, voglio anche andare direttamente alla sezione Rete all’interno dell’app Impostazioni .

Penso che quello di cui ho bisogno sia lo schema dell’URL dell’app Impostazioni e il formato per build la mia richiesta. Ma dubito che chiamare app come ufficiale sia proibito.

Qualcuno può aiutarmi?

Come notato nei commenti qui sotto, questo non è più ansible in iOS versione 5.1 e successive.

Se sei su iOS 5.0, si applica quanto segue:

Questo è ora ansible in iOS 5 usando lo schema di URL ‘prefs:’. Funziona da una pagina web o da un’app.

URL di esempio:

prefs:root=General prefs:root=General&path=Network 

esempio di utilizzo:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]] [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Network"]] 

Da IOS 8 è ansible richiamare le impostazioni dall’app con questo:

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

Funziona anche in versione iOS> 5.1, ma è necessario aggiungere schemi URL nei tipi di URL in Xcode:

inserisci la descrizione dell'immagine qui

Quindi puoi usare

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; 

È ora ansible aprire l’impostazione WiFi del sistema.

Altro percorso si trova in questa risposta: Impostazioni di avvio di iOS -> Schema URL restrizioni .

Cattive notizie: come suggerito da @Hlung e @jasongregori, per iDevice la cui versione del sistema operativo > = iOS 5.1 && , c’è ancora una volta un modo ufficiale / documentato per chiamare l’app Impostazioni integrata da un’app di terze parti. Periodo.

Chiamare l’app delle impostazioni da un’altra app è ansible solo da iOS 8. Quindi, utilizzare il seguente codice

 if([CLLocationManager locationServicesEnabled]&& [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) { //...Location service is enabled } else { if([[[UIDevice currentDevice] systemVersion] floatValue]<8.0) { UIAlertView* curr1=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [curr1 show]; } else { UIAlertView* curr2=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Settings", nil]; curr2.tag=121; [curr2 show]; } } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (alertView.tag == 121 && buttonIndex == 1) { //code for opening settings app in iOS 8 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } } 

da iOS 8, puoi redirect con

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

goditi la programmazione

Solo una risposta aggiuntiva da aggiungere al proprio indirizzo iOS8 +. Se stai supportando qualcosa sotto l’8, dovresti controllare se è supportato

 BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL); if (canGoToSettings) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } 

Per le impostazioni in iOS 9 questo ha funzionato per me.

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Settings"]]; 

Ma assicurati di aggiungere uno schema di URL nei tipi di URL in

Scheda Informazioni nei target di app.

Per iOS 10 puoi utilizzare:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Settings"]]; 

Funziona anche su iOS 9!