web-dev-qa-db-fra.com

Ouverture de l'application Paramètres à partir d'une autre application

D'accord, je sais qu'il y a beaucoup de questions à ce sujet, mais ils sont tous d'il y a beaucoup de temps.

Alors. Je sais que c'est possible parce que l'application Map le fait.

Dans l'application Carte, si j'éteins la localisation de cette application, elle m'envoie un message et, si j'appuie bien, "Paramètres de l'application" sera ouvert ... et ma question est: comment est-ce possible? .__ Comment puis-je ouvrir l'application "Paramètres" à partir de ma propre application?

En gros, je dois faire la même chose. Si l'utilisateur désactive l'emplacement de mon application, je lui montrerai un message disant quelque chose qui ouvrira l'application "Paramètres".

144
FelipeDev.-

Comme mentionné par Karan Dua ceci est est maintenant possible dans iOS8 avec UIApplicationOpenSettingsURLString voir Documentation Apple .

Exemple:

Swift 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

(Dans Swift 3:} _

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

(Dans Swift 2:} _

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

En Objective-C

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Avant iOS 8:

Vous ne pouvez pas. Comme vous l'avez dit, cette question a été abordée à plusieurs reprises et cette fenêtre vous demandant d'activer les services de localisation est fournie par Apple et non par l'application elle-même. C'est pourquoi il est possible d'ouvrir l'application des paramètres.

Voici quelques questions et articles connexes:

Est-il possible d'ouvrir l'application Settings en utilisant openURL?

Ouverture par programme de l'application des paramètres (iPhone)

Comment puis-je ouvrir l'application Paramètres lorsque l'utilisateur appuie sur un bouton?

iPhone: ouverture du panneau des préférences de l'application à partir de l'application

Ouvrez UIPickerView en cliquant sur une entrée dans les préférences de l'application - Comment faire?

Ouvrez l'application Paramètres?

iOS: les réglages sont incorrects

236
Joe

De @Yatheeshaless 's répondre :

Vous pouvez ouvrir les paramètres de l'application par programme dans iOS8, mais pas dans les versions antérieures d'iOS.

Rapide:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

Swift 4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}

Swift 4.2 (BETA):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Objectif c:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
125
Karan Dua

OUI!! vous pouvez lancer l'écran Paramètres du périphérique, j'ai testé sur iOS 9.2

Étape 1. nous devons ajouter des schémas d'URL

Sélectionnez Paramètres du projet -> Informations -> Types d’URL -> Ajouter de nouveaux modèles d’URL.

 enter image description here

Étape 2. Lancer les paramètres par programmation grâce à @davidcann

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

Nous pouvons également lancer des sous-écrans tels que Musique, Localisation, etc., simplement en utilisant le nom approprié.

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

Voir cette liste de noms complets ici partagée par Henri Normak


Mettre à jour:

Selon le commentaire, tout le monde veut savoir ce qui se passe après ce changement de statut de soumission de ma candidature?

Alors YES!! I got successful update submission and application is available on store without any complain.

Juste pour confirmer, je viens de télécharger ce matin et de désactiver les services de localisation, puis de lancer l'application, qui m'a demandé l'autorisation de localisation puis ma fenêtre d'alerte était là pour m'envoyer les paramètres -> page services de localisation -> Activé -> C'est ça !!

56
swiftBoy

Vous pouvez utiliser ceci sur iOS 5.0 et versions ultérieures: Cela ne fonctionne plus.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
18
davidcann

Dans Swift 3/iOS 10+, cela ressemble maintenant à

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}
4
Damo

Swift 3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}
4
Duy Doan

Voici ce dont j'avais besoin dans Swift 3 (ici, par exemple, rediriger les notifications vers mes applications): 

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}

Source: phynet Gist .

Cela ne fonctionnait avec moi que lorsque les paramètres sont en arrière-plan. Il vous redirigera vers les paramètres de notification de votre application, mais si les paramètres ne fonctionnent pas en arrière-plan, il vous redirigera simplement vers les paramètres de notification en général. 

3
ynamao

UIApplicationOpenSettingsURLString Cela ne fonctionnera que si vous avez préalablement autorisé une autorisation. Par exemple, emplacement, photo, contact, accès aux notifications push. Donc, si vous n'avez pas cette permission de l'utilisateur:

Si iOS 10 ou supérieur,

Il ouvrira les paramètres mais ensuite le plantera. La raison, il n'y a rien dans les paramètres de votre application.

Le code ci-dessous ouvrira les paramètres de votre application dans les paramètres iOS.

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

En raison de l'indisponibilité de l'appareil, je n'ai pas pu vérifier cela sur iOS <10.

Aussi, je pourrais trouver ci-dessous le code de certains Gist et cela fonctionne aussi bien sur iOS 10. Mais je ne sais pas si cela sera approuvé par l'équipe de révision Apple ou non.

https://Gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f

2
Hemang

Swift 4.0

'openURL' est obsolète dans iOS 10.0: veuillez utiliser openURL: options: completionHandler: à la place

UIApplication.shared.open(URL.init(string: UIApplicationOpenSettingsURLString)! , options: [:], completionHandler: nil)
1
Harshil Kotecha

Vous pouvez utiliser le code ci-dessous pour cela.

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
1
Som

Swift 4

Je préfère ouvrir le cadre de manière plus sûre,

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

    UIApplication.shared.open(settingUrl)
}
else {
    print("Setting URL invalid")
}
1

Swift Vous pouvez utiliser la fonction suivante pour ouvrir l'application Settings avec Bluetooth Page

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

Encore une fois, cela n'ouvrirait pas les paramètres de l'application. Cela ouvrirait les paramètres de l'application avec Bluetooth car il s'agit d'une liaison profonde au Bluetooth.

0
Alix

Testé avec iOS 10. Travailler

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

Bonne codage :)

0
Praveen Sharma