web-dev-qa-db-fra.com

paramètres de lancement iOS -> Schéma d'URL de restriction

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

85
kturner

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:

  • 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 = General
  • prefs: root = General & path = Keyboard 
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP 
  • prefs: root = General & path = INTERNATIONAL 
  • prefs: root = LOCATION_SERVICES 
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIC 
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit 
  • prefs: root = General & path = Network 
  • prefs: root = NIKE_PLUS_iPod 
  • prefs: root = NOTES 
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Phone
  • prefs: root = Photos 
  • prefs: root = General & path = ManagedConfigurationList 
  • prefs: root = General & path = Reset 
  • prefs: root = Sons et chemin = Sonnerie 
  • prefs: root = Safari
  • prefs: root = General & path = Assistant 
  • prefs: root = Sons
  • prefs: root = General & path = SOFTWARE_UPDATE_LINK 
  • prefs: root = STORE 
  • prefs: root = Twitter
  • prefs: root = General & path = USAGE
  • prefs: root = VIDEO 
  • prefs: root = General & path = Réseau/VPN
  • prefs: root = Wallpaper 
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING
140
Henri Normak

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

47
Jason Moore

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. 

42
Pedro Tôrres

Mettre à jour:

prefs: ne fonctionnera PAS depuis iOS 10.

32
Nix Wang

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

21
Dan

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
18
Mikhail Gasanov

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.

7
Mahesh

Solution pour iOS10. Fonctionne bien.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=Twitter"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
5
pararmswar Developers

À 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")!)
4
mkeremkeskin

iOS 10

Utilisez app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Voir Gist

2
Alex Hedley

Fonctionne correctement pour les paramètres de notification d'application sur IOS 10 (testé)

if(&UIApplicationOpenSettingsURLString != nil){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
2
Mrsantateam

Voici quelque chose d'autre que j'ai trouvé:

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

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

2
Kaiyuan Xu

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.

0
KoreanXcodeWorker