Reputation: 1046
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?
Upvotes: 8
Views: 13399
Reputation: 27
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
})
}
Upvotes: 3
Reputation: 2328
Edited 26-02-20, Pay attention, in versions later than ios 10 your binary will be rejected
It's possible on iOS 10 and Swift 3
let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app
let app = UIApplication.shared
app.openURL(url!)
Upvotes: 4
Reputation: 14727
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.
If you need to connect to a certain Wi-Fi network NEHotspotConfigurationManager
maybe helps.
Source: Apple technical Q&A QA1942
Upvotes: 3
Reputation: 887
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)
}
}
Upvotes: 6
Reputation: 178
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 😊😊
Upvotes: 0
Reputation: 7
Use the following for iOS 10 and above:
if let url = URL(string:"App-Prefs:root=Settings&path=General") {
UIApplication.shared.openURL(url)
}
Upvotes: -1
Reputation: 565
Just use:
UIApplication.shared.openURL(URL(string:"prefs:root=WIFI")!)
Upvotes: -1