我正在尝试使用Objective-C通过我的应用程序访问WIFI设置。但找不到任何办法。有人能帮助我吗?
已经测试过:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
在iOS 9上不起作用。
这是我的代码
if (&UIApplicationOpenSettingsURLString != NULL) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
}
尝试将prefs添加到https://stackoverflow.com/a/31253743/3668465这样的URL方案中
这适用于iOS 10,
转到目标 - >(应用程序) - >信息 - > URL类型 - > +
在URL Schemes
写
首选项
然后打电话,
- (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"]];
}
}
根据Apple的New Review标准,我们不应该使用这种方式来打开Wi-Fi设置。我已经在我的应用程序中使用了很长时间,最近Apple拒绝了以下评论。
您的应用使用“prefs:root =”非公共URL方案,这是一个私有实体。 App Store上不允许使用非公共API,因为如果这些API发生变化,可能会导致糟糕的用户体验。
因此,您可以使用UIApplicationOpenSettingsURLString导航到应用程序的设置。
SWIFT代码:
if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.openURL(settingsUrl)
}
所有条件:
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.
}
//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];
你不能直接使用openURL进行wifi设置。您所能做的就是打开自己应用的设置。
if (&UIApplicationOpenSettingsURLString != nil) {
NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:URL];
} else {
...
}
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=
,但我的应用程序被拒绝了。因此,如果您尝试使用深层链接进行更具体的操作,请不要浪费您的时间,因为此刻您无法做到!