J'ai récemment découvert le génial iOS5 Paramètres d'URL des paramètres personnalisés}, qui peut être expliqué en détail dans cet excellent website .
J'ai constaté que cela fonctionnait, dirigeant l'utilisateur vers l'application Paramètres à partir de mon application:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General"]];
Mais il semble impossible d’acheminer directement vers le chemin Restrictions via le paramètre path
:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
Quelqu'un a-t-il trouvé de la documentation à ce sujet ou a-t-il été capable de faire ce travail?
Toute idée serait grandement apprécié. J'essaie de convaincre l'utilisateur d'activer les achats intégrés à l'application et je ne voudrais pas que l'utilisateur clique manuellement sur les restrictions (pas très évident).
AS @Nix Wang 's REPONSE CE IS NE FONCTIONNE PAS IOS 10
AVERTISSEMENT: cette méthode ne fonctionnera pas pour les appareils fonctionnant sous iOS 5.1 et versions supérieures - Voir le commentaire de Hlung ci-dessous.
Il est possible que le composant path
ait un nom différent de celui de la section, mais il est également possible que vous ne puissiez pas actuellement accéder à cette section directement à partir d'une URL. J'ai trouvé une liste d'URL possibles et de restrictions n'est pas dessus, peut-être n'est-elle pas encore découverte.
Liste des URL actuellement connues dans l'application Paramètres:
À partir de iOS8, vous pouvez ouvrir l'application Paramètres intégrée avec:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
La chaîne d'URL réelle est @"app-settings:"
. J'ai essayé d'ajouter différentes sections à la chaîne ("Bluetooth", "GÉNÉRAL", etc.), mais il semble que seul le lien à l'écran principal de paramètres fonctionne. Poster une réponse si vous découvrez le contraire.
Si vous ajoutez le modèle d'URL prefs à votre application iOS, cela vous permettra d'utiliser tous les modèles possibles dans iOS 5. Je l'ai testé sur iOS 9, mais je pense que cela fonctionnera également sur les versions antérieures.
Mettre à jour:
prefs:
ne fonctionnera PAS depuis iOS 10.
Oui, j'ai vu cela (et beaucoup d'autres), et même l'a implémenté dans une application de test. Vraiment besoin d’obtenir le mot définitif d’Apple, mais l’avis du consensus de la communauté est qu’Apple l’a interdit en 5.1 après avoir été publiquement «découvert/publié»; les applications qui le contiennent ne seront donc pas acceptées.
08/01/12 Mise à jour: A demandé à mon compte de développeur s'il était possible de lancer par programme la boîte de dialogue Paramètres WiFi. Voici la réponse:
"Nos ingénieurs ont examiné votre demande et ont conclu que Il n'existe aucun moyen pris en charge pour obtenir la fonctionnalité souhaitée,". Les configurations du système d'expédition actuellement fournies. "
Dans iOS 9 ça marche encore!
Pour ouvrir Paramètres> Général> Clavier , j'utilise:
prefs:root=General&path=Keyboard
De plus, il est possible d'aller plus loin vers Claviers :
prefs:root=General&path=Keyboard/KEYBOARDS
Je voulais ouvrir le menu Bluetooth dans l'application Paramètres et le chemin ci-dessus (prefs: root = General & path = Bluetooth) ne fonctionnait pas pour moi. Ce qui a fini par travailler pour moi était
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)
Assurez-vous d’avoir défini le schéma d’URL prefs
au préalable.
Solution pour iOS10. Fonctionne bien.
NSURL *URL = [NSURL URLWithString:@"App-prefs:root=Twitter"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
À partir de iOS10, vous pouvez utiliser
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!)
pour ouvrir les paramètres généraux.
vous pouvez aussi y ajouter des URL connues (vous pouvez les voir dans la réponse la plus votée) pour ouvrir des paramètres spécifiques. Par exemple, celui ci-dessous ouvre touchID et mot de passe.
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
Fonctionne correctement pour les paramètres de notification d'application sur IOS 10 (testé)
if(&UIApplicationOpenSettingsURLString != nil){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
Voici quelque chose d'autre que j'ai trouvé:
Après avoir défini le schéma d'URL "prefs", "prefs: root = Safari & path = ContentBlockers" travaille sur Simulator (iOS 9.1 Anglais ), mais ne fonctionne pas sur Simulator (chinois simplifié) . Il suffit de passer à Safari, mais pas aux bloqueurs de contenu. Si votre application est internationale, soyez prudent.
Mise à jour: Je ne sais pas pourquoi, maintenant je ne peux plus passer à ContentBlockers, le même code, la même version, ne fonctionnent pas. :(
Sur les déviations réelles (le mien est iPhone 6S et iPad mini 2), "Safari" devrait être "SAFARI" , "Safari" ne fonctionne pas sur un appareil réel, "SAFARI" fonctionne maintenant sur un simulateur:
#if Arch(i386) || Arch(x86_64)
// Simulator
let url = NSURL(string: "prefs:root=Safari")!
#else
// Device
let url = NSURL(string: "prefs:root=SAFARI")!
#endif
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
Jusqu'à présent, nous n'avons trouvé aucune différence entre iPhone et iPad.
Je suis en train de mettre à jour une nouvelle ici . Utiliser 'prefs:' n'est PAS rejeté par Apple, je l'ai testé et vérifié comme approuvé par l'App Store (août 2016). THX.