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).

84
demandé sur Mark 2011-11-23 20:57:16

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
140
répondu Henri Normak 2017-05-26 06:09:07

à 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.

47
répondu Jason Moore 2014-09-30 19:27:47

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.

42
répondu Pedro Tôrres 2015-07-22 10:20:30

mise à jour:

prefs: ne fonctionnera pas depuis iOS 10.

30
répondu Nix Wang 2016-08-08 09:08:56

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."

21
répondu Dan 2016-06-29 16:06:24

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
18
répondu Mikhail Gasanov 2015-09-29 08:36:18

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.

7
répondu Mahesh 2016-01-19 13:14:44

Solution pour iOS10. Fonctionne très bien.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
5
répondu pararmswar Developers 2017-04-28 19:42:06

à 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")!)
4
répondu mkeremkeskin 2017-02-06 14:00:14

Voici autre chose que j'ai trouvé:

  1. 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. : (

  2. 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)
    }
    
  3. jusqu'à présent, n'a trouvé aucune différence entre iPhone et iPad.

2
répondu Kaiyuan Xu 2016-05-07 17:28:43

fonctionne très bien pour les paramètres de Notification App sur IOS 10 (testé)

if(&UIApplicationOpenSettingsURLString != nil){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
2
répondu Mrsantateam 2017-01-25 12:31:52

iOS 10

utiliser app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

voir gist

2
répondu Alex Hedley 2017-10-08 08:14:30

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.

0
répondu Maggie Phillips 2016-08-05 06:17:14