web-dev-qa-db-fra.com

Paramètres WiFi ouverts par "prefs: root = WIFI" échoué dans iOS 10

J'utilisais prefs: root = WIFI url scheme dans mon application avec les préférences saisies dans info.plist pour ouvrir directement l'application de configuration iOS dans les paramètres Wi-Fi. Il fonctionnait parfaitement sous iOS 9 mais ne fonctionne plus sous iOS 10.

Est-ce que quelqu'un sait s'il s'agit simplement d'une régression dans la première prévisualisation du développeur ou si la manière d'ouvrir les paramètres Wi-Fi a changé dans iOS 10 ou si cela n'est plus autorisé?

17
tbago

Justement, c'est explicite: Apple ne le permet pas. Il est possible que votre application réussisse de toute façon, mais cela revient à utiliser une autre API non documentée.

Voici la liste complète des schémas d'URL Apple pris en charge.

Voici un fil où Apple confirme que "tout modèle d’URL d’Apple qui n’est pas officiellement documenté doit être considéré comme une API privée".

21
Luke

Swift 3.0: - fonctionne sous iOS 10

@IBAction func openWifiSetting(_ sender: AnyObject) {
    let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app
    UIApplication.shared.openURL(url!)
}
13
Siddharth jain

Mon application utilise également cette API. Malheureusement, Apple le désactive sur iOS 10. Voici ma solution: sous iOS 10, il est toujours possible d'ouvrir Setting App. sur iOS 10, vous accédez à une sous-page (Accès aux données cellulaires) de Setting App, vous pouvez revenir à la page de réglage en un clic. Je décide de le garder. car il est toujours pratique que l'utilisateur ouvre manuellement Setting App.

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
} else {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
6
ronan

essayez ceci pour Objective C dans iOS 10

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
} else {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
}
6
Mohammad Rana

Utilisation de "App-Prefs: root" au lieu de "prefs: root"

2
user7829472

iOS 10, pour ouvrir les paramètres de vos applications:

if let settingsURL = URL(string: UIApplicationOpenSettingsURLString) {  
                UIApplication.shared.openURL(settingsURL)
          }
2
userXYZ

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"]];
    }
}
1
Shuvo Joseph