À un moment de mon application, je voudrais rediriger l'utilisateur vers l'application officielle Settings. Si possible, je souhaite également accéder directement à la section Réseau de l'application Paramètres.
Je pense que ce dont j'ai besoin, c'est du schéma d'URL de l'application Settings et du format de construction de ma requête. Mais je doute que l'appel d'une telle application officielle soit interdit.
Quelqu'un peut-il m'aider?
Mauvaise nouvelle: comme l'ont suggéré @Hlung et @jasongregori, pour les iDevices dont la version du système d'exploitation> = iOS 5.1 && <iOS 8.0 , il existe encore une foisNOmoyen officiel/documenté d'appeler le système intégré. Paramètres de l'application à partir d'une application tierce. Période.
Comme indiqué dans les commentaires ci-dessous, cela n'est plus possible dans iOS version 5.1 et ultérieure.
Si vous êtes sur iOS 5.0, les conditions suivantes s'appliquent:
Ceci est maintenant possible dans iOS 5 en utilisant le schéma url 'prefs:'. Cela fonctionne à partir d'une page Web ou d'une application.
exemple d'URL:
prefs:root=General
prefs:root=General&path=Network
exemple d'utilisation:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]]
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Network"]]
À partir de IOS 8, vous pouvez appeler les paramètres de l'application avec ceci:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Cela fonctionne également dans iOS version> 5.1, mais vous devez ajouter un modèle d'URL dans les types d'URL dans Xcode:
Ensuite, vous pouvez utiliser
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
Il peut ouvrir les paramètres WiFi du système à présent.
Autre chemin s'il vous plaît trouver dans cette réponse: Réglages de lancement iOS -> Restrictions URL Scheme .
L'appel de l'application de paramètres depuis une autre application est possible uniquement depuis iOS 8. Utilisez donc le code suivant.
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]];
}
}
depuis iOS 8, vous pouvez rediriger avec
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
profiter du codage
Pour les paramètres sous iOS 9, cela fonctionne pour moi.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Settings"]];
Mais assurez-vous d’ajouter des schémas d’URL dans les types d’URL dans
Onglet Info dans les cibles d'application.
Juste une réponse supplémentaire à ajouter à l'adressage iOS8 +. Si vous soutenez quelque chose en dessous de 8, vous devriez vérifier s'il est supporté
BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL);
if (canGoToSettings)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
Pour iOS 10, vous pouvez utiliser:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Settings"]];
Il fonctionne également sur iOS 9!