iOS de Lancement Paramètres -> Restrictions Schéma d'URL
j'ai récemment découvert le génial iOS5 Custom Settings URL Scheme , qui peut être expliqué en détail à ce grand site web .
j'ai trouvé que cela fonctionne, dirigeant l'utilisateur vers les paramètres de l'application de mon application:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General"]];
mais ne semble pas pouvoir se diriger directement vers le Restrictions chemin via le path
paramètre:
[[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 pu faire en sorte que cela fonctionne?
toute perspicacité serait grandement appréciée. J'essaie de prendre l'utilisateur pour activer l'achat In-App, et je préfère ne pas avoir l'utilisateur cliquer manuellement sur les Restrictions (pas très évident).
13 réponses
AS @Nix Wang 's ANSWER THIS IS NOT WORK IN IOS 10
AVERTISSEMENT: Cette méthode ne fonctionnera pas pour les appareils exécutant iOS 5.1 et supérieur - voir le commentaire de Hlung ci-dessous.
il est possible que le composant path
ait un nom différent de celui de la section actuelle, mais il est également possible que vous ne puissiez pas accéder directement à cette section. à partir d'une URL. J'ai trouvé une liste d'URLs possibles et les Restrictions ne sont pas dessus, peut-être que ce n'est pas encore découvert.
liste des URLs actuellement connues dans les paramètres de l'application:
- prefs: root=General&path = About
- prefs: root=General&path =ACCESSIBILITY
- prefs: root=AIRPLANE_MODE
- prefs: root=General&path =AUTOLOCK
- prefs: root=General&path=USAGE / CELLULAR_USAGE
- prefs:root=Luminosité
- prefs: root=General&path =Bluetooth
- prefs: root=General&path=DATE_AND_TIME
- prefs: root=FACETIME
- prefs:root=Général
- prefs: root=General&path =Keyboard
- préfs: root=CASTLE
- prefs: root=CASTLE&path=STORAGE_AND_BACKUP
- prefs: root=General&path =INTERNATIONAL
- prefs: root=LOCATION_SERVICES
- prefs: root=ACCOUNT_SETTINGS
- préfs: root=MUSIC
- prefs: root=MUSIC&path =EQ
- préfs: root=MUSIC&path=VolumeLimit
- prefs: root=General&path =Network
- prefs: root=NIKE_PLUS_IPOD
- prefs: root=NOTES
- prefs: root=NOTIFICATIONS_ID
- préfs: root = Phone
- préfs: root=Photos
- prefs: root=General&path=ManagedConfigurationList
- prefs: root=General&path =Reset
- préfs: root=Sounds&path =Ringtone
- prefs: root=Safari
- prefs: root=General&path =Assistant
- préfs: root=Sounds
- prefs: root=General&path=SOFTWARE_UPDATE_LINK
- prefs: root=STORE
- préfs: root=TWITTER
- prefs: root=General&path =USAGE
- préfs: root=VIDEO
- prefs: root=General&path = Network /VPN
- préfs: root=Fond D'écran
- préfs: root=WIFI
- prefs: root=INTERNET_TETHERING
à partir de iOS8, vous pouvez ouvrir L'application de 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 actuelle est @"app-settings:"
. J'ai essayé d'ajouter différentes sections à la chaîne ("Bluetooth", "général", etc.) mais semble seulement le lien vers L'écran des paramètres principaux fonctionne. Postez une réponse si vous découvrez le contraire.
si vous ajoutez le schéma D'URL prefs à votre application iOS, il vous permettra d'utiliser tous les schémas que nous pourrions utiliser dans iOS 5. Je l'ai testé sur iOS 9, mais je pense que ça marchera aussi sur les versions plus anciennes.
Yep, vu cela (et bien plus), de même il mis en œuvre dans une application de test. Vraiment besoin d'obtenir le mot définitif D'Apple, mais L'opinion de consensus de la communauté est Apple l'a rejeté en 5.1 après qu'il ait été publiquement "découvert / publié", de sorte que les applications contenant il ne sera pas accepté.
08/01/12 mise à jour: a demandé à Apple via Mon compte de développeur s'il y a un moyen de lancer programmatiquement la boîte de dialogue Paramètres WiFi. Ici, c'est le réponse:
"Nos ingénieurs ont examiné votre demande et ont conclu que il n'existe aucun moyen pour obtenir la fonctionnalité souhaitée donné les configurations actuelles du système d'expédition."
Dans iOS 9 il fonctionne à nouveau!
ouvrir Réglages > Général > Clavier , j'utilise:
prefs:root=General&path=Keyboard
en outre, il est possible d'aller plus loin à claviers :
prefs:root=General&path=Keyboard/KEYBOARDS
j'ai voulu ouvrir le Menu Bluetooth dans L'Application Paramètres et le chemin ci-dessus (préfixe:root=General&path=Bluetooth) n'a pas fonctionné pour moi. Ce qui a fini par travailler pour moi était
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)
assurez-vous que vous avez le schéma D'URL prefs
défini en premier.
Solution pour iOS10. Fonctionne très 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 également y ajouter des urls connues(vous pouvez les voir dans la réponse la plus corrigée) pour ouvrir des paramètres spécifiques. Par exemple, celui ci-dessous ouvre touchID et passcode.
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
Voici autre chose que j'ai trouvé:
-
après que j'ai défini le schéma D'URL "prefs", "prefs:root=Safari&path=ContentBlockers" fonctionne sur simulateur (iOS 9.1 anglais ), mais ne fonctionne pas sur simulateur (Chinois Simplifié) . Il saute juste au Safari, mais pas les bloqueurs de contenu. Si votre application est internationale, soyez prudent.
Mise à jour: Ne sais pas maintenant, je ne peux plus sauter dans ContentBlockers, le même code, la même version, ne fonctionne plus maintenant. : ( -
on real devcies (mine is iPhone 6S & iPad mini 2), "Safari" devrait être "SAFARI" , "Safari" ne fonctionne pas sur l'appareil réel, "SAFARI" travaille maintenant sur 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, n'a trouvé aucune différence entre iPhone et iPad.
fonctionne très bien pour les paramètres de Notification App sur IOS 10 (testé)
if(&UIApplicationOpenSettingsURLString != nil){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
je mets à jour une nouvelle ici. L'utilisation de' prefs: 'seulement N'est pas rejetée par Apple, Je l'ai testé et vérifié approuvé à l'app store(en août 2016). thx.