web-dev-qa-db-fra.com

comment ouvrir par programmation les paramètres WIFI dans Objective C dans iOS9

J'essaie d'accéder aux paramètres WIFI via mon application à l'aide d'Objective-C. Mais ne peut trouver aucun moyen. Quelqu'un pourrait-il m'aider?

Déjà testé avec:

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

Ne fonctionne pas sur iOS 9.

12

C'est mon code 

if (&UIApplicationOpenSettingsURLString != NULL) { 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; 
} 

Essayez d’ajouter des préférences aux modèles d’URL tels que https://stackoverflow.com/a/31253743/3668465 did 

Cela fonctionne très bien sur iOS 10,

Allez à Cibles -> (Application) -> Info -> Types d'URL -> +

Dans le URL Schemes écrire 

prefs

Alors appelez,

- (void)openWifiSettings
{
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=WIFI"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
    }
}
6
Shuvo Joseph

Conformément aux normes New Review d'Apple, nous ne sommes pas censés utiliser cette méthode pour ouvrir les paramètres Wi-Fi. Je l'utilise depuis longtemps dans mon application et Apple a récemment rejeté le commentaire ci-dessous.

Votre application utilise le schéma d'URL non public "prefs: root =", qui est un entité privée. L'utilisation d'API non publiques n'est pas autorisée sur l'application Stockez car cela peut entraîner une mauvaise expérience utilisateur si ces APIs changement.

Vous pouvez donc simplement accéder aux paramètres de l'application à l'aide de UIApplicationOpenSettingsURLString.

Code rapide:

if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
                    UIApplication.shared.openURL(settingsUrl)
                }
5
Karthick Ramesh

Toutes les conditions:

    NSURL * urlCheck1 = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
    NSURL * urlCheck2 = [NSURL URLWithString:@"prefs:root=WIFI"];
    NSURL * urlCheck3 = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

    if ([[UIApplication sharedApplication] canOpenURL:urlCheck1])
    {
        [[UIApplication sharedApplication] openURL:urlCheck1];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck2])
    {
        [[UIApplication sharedApplication] openURL:urlCheck2];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck3])
    {
        [[UIApplication sharedApplication] openURL:urlCheck3];
    }
    else
    {
        //Unable to open settings app.
    }
3
Vinod Sutar
//Pre iOS 10
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if (![[UIApplication sharedApplication] canOpenURL:url])
{   //iOS 10+
    url = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
}
[[UIApplication sharedApplication] openURL:url];
2
Pierre

Swift 4.2, iOS 12

C'est la fonction que j'utilise actuellement dans mon application pour cela:

extension UIApplication {

    ...

    @discardableResult
    static func openAppSetting() -> Bool {
        guard
            let settingsURL = URL(string: UIApplicationOpenSettingsURLString),
            UIApplication.shared.canOpenURL(settingsURL)
            else {
                return false
        }

        UIApplication.shared.open(settingsURL)
        return true
    }
}

Usage: UIApplication.openAppSetting()

J'ai également utilisé un schéma d'URL non public, tel que: prefs:root=, mais mon application a été rejetée. Donc, si vous essayez de faire des choses plus spécifiques avec la profondeur de la fibre, ne perdez pas votre temps, car pour le moment, vous ne pouvez pas!

1

Vous ne pouvez pas accéder directement au réglage wifi avec openURL. Tout ce que vous pouvez faire est d'ouvrir les paramètres de votre propre application.

if (&UIApplicationOpenSettingsURLString != nil) {
   NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
   [[UIApplication sharedApplication] openURL:URL];
} else {
  ...
}
1
Bart