我正在使用Objective-C编写我的应用程序,尝试访问WIFI设置,但是找不到任何方法。有人能帮助我吗?
已尝试过:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
不支持iOS 9。
我正在使用Objective-C编写我的应用程序,尝试访问WIFI设置,但是找不到任何方法。有人能帮助我吗?
已尝试过:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
不支持iOS 9。
这是我的代码
if (&UIApplicationOpenSettingsURLString != NULL) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
}
尝试像https://dev59.com/6msy5IYBdhLWcg3w5CBr#31253743那样向URL方案添加首选项
if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.openURL(settingsUrl)
}
这在iOS 10上很好用,
前往Targets --> (应用程序) --> 信息 --> URL类型 --> +
在URL Schemes
中写入
prefs
然后调用,
- (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"]];
}
}
所有条件:
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.
}
使用openURL无法直接进入WiFi设置。您只能打开您自己应用程序的设置。
if (&UIApplicationOpenSettingsURLString != nil) {
NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:URL];
} else {
...
}
//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];
Swift 4.2,iOS 12
这是我目前在应用中使用的函数:
extension UIApplication {
...
@discardableResult
static func openAppSetting() -> Bool {
guard
let settingsURL = URL(string: UIApplication.openSettingsURLString),
UIApplication.shared.canOpenURL(settingsURL)
else {
return false
}
UIApplication.shared.open(settingsURL)
return true
}
}
用法: UIApplication.openAppSetting()
我还使用了非公开的URL模式, 例如: prefs:root=
, 但是我的应用被拒绝了。所以如果你想要通过深度链接做更具体的事情,不要浪费时间,因为目前你做不到!
您可以使用此选项:
iOS >= 4.1,可以获取设备当前连接的无线网络的SSID。
为此,您将使用函数CNCopyCurrentNetworkInfo。
有关实现的详细信息:iPhone get SSID without private library