Open Wifi Settings by “prefs:root=WIFI” failed in

2019-01-23 03:38发布

I was using prefs:root=WIFI url scheme in my app with prefs entered in info.plist to open directly the iOS settings application in Wi-Fi settings and it was working great on iOS 9 but it does not work anymore on iOS 10.

Does anyone know if this is just a regression in the first developer preview or the way to open Wi-Fi settings has changed in iOS 10 or it is not allowed anymore?

标签: ios wifi ios10
7条回答
Ridiculous、
2楼-- · 2019-01-23 04:29

Using "App-Prefs:root" instead of "prefs:root"

查看更多
【Aperson】
3楼-- · 2019-01-23 04:29

This works fine on iOS 10,

Go to Targets --> (Application) --> Info --> URL Types --> +

In the URL Schemes write

prefs

Then Call,

- (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"]];
    }
}
查看更多
欢心
4楼-- · 2019-01-23 04:32

My app is also using that api. Unfortunately apple disable this on iOS 10. Here's my solution: below iOS 10, it can still open Setting App. on iOS 10, it will go to a subpage(Cellular Data access) of Setting App, you can back to setting page by one click. I decide to keep it. because it's still convenient than user manually open 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]];
}
查看更多
Bombasti
5楼-- · 2019-01-23 04:33

SWIFT 3.0:- working in iOS 10 and newer versions also iOS 7,8,9

@IBAction func openWifiSetting(_ sender: AnyObject) {
    let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app
    UIApplication.shared.openURL(url!)
}
查看更多
手持菜刀,她持情操
6楼-- · 2019-01-23 04:36

try this for objective c in 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"]];
}
查看更多
贪生不怕死
7楼-- · 2019-01-23 04:39

Just so it's explicit: Apple does not allow this. It's possible your app will make it through anyway, but this is the same as using any other undocumented API.

Here is the full list of supported Apple URL schemes.

Here's a thread where Apple confirms that "any Apple URL schemes that are not officially documented should be considered private API."

查看更多
登录 后发表回答