Paramètres de lancement iOS -> Schéma d'URL de restrictions

86

J'ai récemment découvert l'impressionnant schéma d'URL des paramètres personnalisés iOS5 , qui peut être expliqué en détail sur ce site Web génial .

J'ai trouvé que cela fonctionnait, en dirigeant l'utilisateur vers l'application Paramètres à partir de mon application:

[[UIApplication sharedApplication] openURL:
       [NSURL URLWithString:@"prefs:root=General"]];

Mais ne semble pas pouvoir acheminer directement vers le chemin des restrictions via le pathparamè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 ce travail?

Toute idée serait grandement apprécié. J'essaie de demander à l'utilisateur d'activer les achats dans l'application et je préfère ne pas que l'utilisateur clique manuellement sur Restrictions (pas très évident).

kturner
la source
2
est-ce que quelqu'un connaît l'url de Touch ID & Passcode?
Fabian Köbel
1
utilisez ceci pour l'ID tactile: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel

Réponses:

144

COMME LA RÉPONSE DE @Nix Wang , CELA NE FONCTIONNE PAS DANS 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 pathcomposant ait un nom différent de celui de la section réelle, mais il est également possible que vous ne puissiez actuellement pas accéder à cette section directement à partir d'une URL. J'ai trouvé une liste d'URL possibles et les restrictions ne figurent pas dessus, peut-être que ce n'est tout simplement pas encore découvert.

Liste des URL actuellement connues dans l'application Paramètres:

  • prefs: root = General & path = About
  • prefs: root = Général & chemin = ACCESSIBILITÉ
  • prefs: root = AIRPLANE_MODE
  • prefs: root = General & path = AUTOLOCK
  • prefs: root = General & path = USAGE / CELLULAR_USAGE
  • prefs: root = Luminosité
  • prefs: root = Général & chemin = Bluetooth
  • prefs: root = General & path = DATE_AND_TIME
  • prefs: root = FACETIME
  • prefs: root = Général
  • prefs: root = Général & chemin = Clavier
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP
  • prefs: root = Général & chemin = INTERNATIONAL
  • prefs: root = LOCATION_SERVICES
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIQUE
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit
  • prefs: root = Général & chemin = Réseau
  • prefs: root = NIKE_PLUS_IPOD
  • prefs: root = REMARQUES
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Téléphone
  • prefs: root = Photos
  • prefs: root = General & path = ManagedConfigurationList
  • prefs: root = Général & chemin = Réinitialiser
  • prefs: root = Sons & chemin = Sonnerie
  • prefs: root = Safari
  • prefs: root = Général & chemin = 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 = Général & chemin = Réseau / VPN
  • prefs: root = Fond d'écran
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING
Henri Normak
la source
54
Juste un avertissement aimable, idownloadblog.com/2011/11/29/iphone-5-1-disables-shortcuts a déclaré que tous les schémas d'URL des paramètres iOS seront supprimés dans iOS5.1 (donc des URL telles que prefs: root = General & path = Network ne fonctionnera plus) Alors, s'il vous plaît conscient.
Hlung
3
Ils ne sont pas complètement supprimés, il suffit de mettre ces liens URL dans un bouton dans un UIAlertView. Il suffit donc de mettre un avertissement dans UIAlertView que l'application passera en arrière-plan et que les paramètres s'ouvriront, puis OK, et Annuler, etc.
zambono
4
Cela ne fonctionne plus, cela fonctionnait sur l'une de mes applications il y a quelque temps, mais plus maintenant.
zambono
5
À partir d'iOS8, vous pouvez lancer l'application Paramètres intégrée avec l'url:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
Jason Moore
2
Toute solution / alternative pour ios10 s'il vous plaît.
ranjit.x.singh
48

À partir d'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 URL réelle est @"app-settings:". J'ai essayé d'ajouter différentes sections à la chaîne ("Bluetooth", "GENERAL", etc.) mais il semble que le lien vers l'écran principal des paramètres fonctionne. Postez une réponse si vous découvrez le contraire.

Jason Moore
la source
10
C'est parce que cet appel particulier est l'URL de lancement des paramètres. Il ouvre les paramètres personnalisés de l'application s'ils existent. Sinon, il ouvre simplement l'application Paramètres sur l'écran principal. developer.apple.com/library/ios/documentation/UIKit/Reference/…
JAL
1
Réponse fantastique si votre application a des paramètres spécifiques que vous souhaitez activer / désactiver. Le tout en un seul endroit et vous n'avez pas à naviguer dans les paramètres pour obtenir la configuration souhaitée. Merci!
kyleturner
1
@ FabianKöbel avez-vous pu en trouver un pour TouchID & Passcode?
ShayanK
1
@AspersionCast: vous pouvez utiliser ceci: prefs: root = TOUCHID_PASSCODE ( stackoverflow.com/questions/35410746/… )
Fabian Köbel
Cela semble être la seule méthode actuellement approuvée par Apple pour lancer l'application Paramètres.
u2Fan
42

Si vous ajoutez le schéma d'URL prefs à votre application iOS, cela vous permettra d'utiliser tous ces schémas que nous pourrions dans iOS 5. Je l'ai testé sur iOS 9, mais je pense que cela fonctionnera également sur les anciennes versions.

Pedro Tôrres
la source
Cette astuce ne fonctionne qu'à partir d'iOS 8 là où cela n'est pas nécessaire.
Valeriy Van
1
Mais même dans iOS 8, vous n'êtes pas autorisé à ouvrir les paramètres WiFi, par exemple, si vous n'ajoutez pas cette honte URL à votre application.
Pedro Tôrres
Oui, tu as raison. Je n'ai pas pensé à ce cas d'utilisation.
Valeriy Van
9
@conorgriffin Pour vous et tous ceux qui se demandent quel est le décor sous: Cibles | (Application) | Info | Types d'URL | +
Kevin Sylvestre
Quelqu'un a dit qu'il avait été rejeté pour avoir utilisé l'url "prefs: root". stackoverflow.com/questions/8246070/…
Hlung
33

Mise à jour:

prefs: ne fonctionnera PAS depuis iOS 10.

Nix Wang
la source
4
Quelle est l'alternative?
OXXY
1
C'est fou, puisque ce document officiel d'Apple ( developer.apple.com/library/ios/qa/qa1924/_index.html ) adresse volontairement le problème des préférences, et daté du 8/2/2016.
daspianist le
1
Ce document dit uniquement de l'utiliser pour les paramètres du clavier (toute autre chose que cette utilisation spécifique est une violation.)
Peter Johnson
Malheureusement, cela ne semble pas fonctionner même pour les paramètres du clavier sous iOS 10.
Intrications
4
Bien que cela prefs:ne fonctionne plus, ce qui suit (du moins en ouverture générale):App-Prefs::root=Settings&path=General
daspianiste
22

Oui, j'ai vu cela (et bien d'autres), même mis en œuvre dans une application de test. Il faut vraiment obtenir le mot définitif d'Apple, mais l'opinion consensuelle de la communauté est qu'Apple l'a interdit en 5.1 après qu'il ait été publiquement "découvert / publié", donc les applications qui le contiennent ne seront pas acceptées.

Mise à jour du 01/08/12: J'ai demandé à Apple via mon compte développeur s'il existe un moyen 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 qu'il n'y a aucun moyen pris en charge pour obtenir la fonctionnalité souhaitée étant donné les configurations du système actuellement expédiées."

Dan
la source
9
Je recommande à tous ceux qui ont besoin de cette fonctionnalité de consigner un rapport de bogue officiel. Plus elle est signalée, plus elle sera visible et plus il y aura de chances qu'une solution prise en charge soit présentée à l'avenir. bugreport.apple.com
Matt Connolly
18

Dans iOS 9, cela fonctionne à nouveau!

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 les claviers :

prefs:root=General&path=Keyboard/KEYBOARDS
Mikhail
la source
Je viens de remarquer cela dans l'application PopKey. J'ai essayé l'url pour Paramètres> Paramètres Wi-Fi et cela fonctionne également. Espérons que cela reste.
Jamie McDaniel du
Est - ce que ces systèmes doivent être ajoutés à LSApplicationQueriesSchemesen info.plist?
Warpling
2
Non, ils ne le font pas. Utilisez simplement son avec openURL: method.
Mikhail
1
J'essaie de l'utiliser pour créer un lien vers les paramètres d'une page Web et cela semble fonctionner dans Safari sur un iPhone mais pas un iPad. Les deux sont sur 9.0.2. Sérieusement, Apple?
Randy H.
3
Encore nécessaire pour ajouter le schéma d'URL de préférences à la cible
shim
7

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 fonctionner pour moi était

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)

Assurez-vous que le prefsschéma d'URL est défini en premier.

Mahesh
la source
En effet, le menu Bluetooth a été déplacé dans les versions récentes d'iOS. C'est maintenant un paramètre de premier niveau, pas sous Général .
Nate
@Imran: Vous avez oublié les prefstrucs.
Michael Dorner le
5

Solution pour iOS10. Fonctionne très bien.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
Développeurs pararmswar
la source
Est-ce légitime? Une soumission réussie de l'application ne signifie pas que cela est légitime. Il peut éventuellement échouer à l'avenir ..
Stas
@Stas: Non, ce n'est pas le cas, car c'est une API privée.
Tejas K
4

À partir d'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 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")!)
mkeremkeskin
la source
1
"App-Prefs: root = TOUCHID_PASSCODE" ne fonctionne pas sous iOS 11. Une autre solution?
myaug
App-Prefsest une API privée qui entraînera le rejet de l'application lors de l'examen.
Tejas K
2

Voici autre chose que j'ai trouvé:

  1. Après avoir défini le schéma d'URL "prefs", "prefs: root = Safari & path = ContentBlockers" fonctionne sur Simulator (iOS 9.1 en anglais ), mais pas sur Simulator (chinois simplifié) . Cela passe simplement à 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 sauter dans ContentBlockers, le même code, la même version, ne fonctionne plus maintenant. :(

  2. Sur de vrais devcies (le mien est l'iPhone 6S et l'iPad mini 2), "Safari" devrait être "SAFARI" , "Safari" ne fonctionne pas sur un appareil réel, "SAFARI" fonctionne maintenant sur le 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 l'iPhone et l'iPad.

Kaiyuan Xu
la source
Avez-vous déjà fait fonctionner cela à nouveau? Dommage sinon!
Ryan Brodie
@RyanBrodie Qu'entendez-vous par "une telle honte"?
Kaiyuan Xu
Que ce soit très malheureux, ce serait bien de créer un lien directement dans les paramètres du bloqueur de contenu de Safari
Ryan Brodie
6
@RyanBrodie Même si cela pourrait fonctionner, je vous suggère de ne pas l'utiliser pour les applications de l'App Store pour le moment, je viens de recevoir un "rejeté" d'iTunes Connect ce matin, car "prefs: root" est une API privée (il y a des applications using prefs: root sur App Store ... Dieu sait pourquoi)
Kaiyuan Xu
Je n'avais pas réalisé que merci beaucoup pour la mise en garde!
Ryan Brodie
2

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

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

iOS 10

Utilisation app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Voir l' essentiel

Alex Hedley
la source
0

Je mets à jour une nouvelle ici. L'utilisation de 'prefs:' n'est PAS rejetée par Apple, je l'ai testé et vérifié comme approuvé dans l'App Store (en août 2016). Merci.

KoreanXcodeWorker
la source
J'utilise ceci [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]];pour ouvrir le réglage DND de l'appareil. Apple rejettera cela?
Shreyank
Avait-il seulement passé l'examen ou cela fonctionne-t-il également? Je veux dire est-ce que l'openURL vous amène aux paramètres? Cela n'a pas fonctionné de mon côté.
Ahmet Akkök