How to open WIFI setting in Swift 3

2020-03-24 06:18发布

I want to open WIFI setting section from my iOS application, my code was working well before Swift 3 with iOS 9.2

if let settingsURL = URL(string: AppSettingsWifiUrl) {
    UIApplication.shared.openURL(settingsURL)
}

But after updating it is not working with Xcode 8 + Swift 3 + iOS 10, can anybody help here?

7条回答
在下西门庆
2楼-- · 2020-03-24 06:51

Just use:

UIApplication.shared.openURL(URL(string:"prefs:root=WIFI")!)
查看更多
相关推荐>>
3楼-- · 2020-03-24 06:53
 let url=URL(string: "App-Prefs:root=Privacy&path=Location")
        if UIApplication.shared.canOpenURL(url!)
        {
            UIApplication.shared.open(url!, options: [:], completionHandler: {sucess in

            })

        }
        else{
            UIApplication.shared.open(url!, options: [:], completionHandler: {sucess in

            })
        }
查看更多
太酷不给撩
4楼-- · 2020-03-24 06:53

This thing will work with iOS 10 also but you have to add URL types in ur project setting info. URL schemes should be prefs If you need I will share the screen shot so that you can easily achieve.

Thanks

查看更多
对你真心纯属浪费
5楼-- · 2020-03-24 06:59

We can't do this anymore on iOS 11, we can just open the settings :

if let url = URL(string:UIApplicationOpenSettingsURLString) {
    if UIApplication.shared.canOpenURL(url) {
       let url =  UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}
查看更多
唯我独甜
6楼-- · 2020-03-24 07:02

Use the following for iOS 10 and above:

if let url = URL(string:"App-Prefs:root=Settings&path=General") { 
    UIApplication.shared.openURL(url)
}
查看更多
霸刀☆藐视天下
7楼-- · 2020-03-24 07:06

iOS 9+

You can't directly open the Wi-Fi settings tab from your app. You are just allowed to open the settings app in general.

The following code works with Swift 4 + iOS 9+:

func openWifiSettings() {
    print("Opening Wi-Fi settings.")

    let shared = UIApplication.shared
    let url = URL(string: UIApplicationOpenSettingsURLString)!

    if #available(iOS 10.0, *) {
        shared.open(url)
    } else {
        shared.openURL(url)
    }
}

Source: Apple developer documentation open and openURL


It was actually possible in iOS 9 to open the Wi-Fi settings tab directly (using private API URL schemes) but this was considered as bug usage.

Therefore: Don't use App-Prefs:root or pref:root URL schemes as they will lead to rejection of your app by Apple's review check.

Source: Apple developer forum post from Apple's eskimo.


iOS 11+

If you need to connect to a certain Wi-Fi network NEHotspotConfigurationManager maybe helps.

Source: Apple technical Q&A QA1942

查看更多
登录 后发表回答