如何在 Swift 3 中打开 WIFI 设置
Posted
技术标签:
【中文标题】如何在 Swift 3 中打开 WIFI 设置【英文标题】:How to open WIFI setting in Swift 3 【发布时间】:2017-02-07 10:33:48 【问题描述】:我想从我的 ios 应用程序中打开 WIFI 设置部分,我的代码在 Swift 3 和 iOS 9.2 之前运行良好
if let settingsURL = URL(string: AppSettingsWifiUrl)
UIApplication.shared.openURL(settingsURL)
但更新后它不适用于 Xcode 8 + Swift 3 + iOS 10,有人可以帮忙吗?
【问题讨论】:
***.com/questions/28152526/… @SinaKH:谢谢你的回复,但是会打开应用设置我要打开WIFI设置。 【参考方案1】: 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
)
【讨论】:
【参考方案2】:已于 26-02-20 编辑, 注意,在 ios 10 之后的版本中,您的二进制文件将被拒绝
在 iOS 10 和 Swift 3
上可以let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app
let app = UIApplication.shared
app.openURL(url!)
【讨论】:
您从哪里获得这些信息?能否提供出处? @winklerrr 我在 ios dev iphonedevwiki.net/index.php/Preferences.app 的这个 wiki 上找到了这个信息,还有更多信息 medium.com/@thanhvtrn/… 最近对一款应用进行了审核,“App-Prefs:root=Wifi”是苹果阻止该版本发布的一个原因。这是邮件的一部分:您的应用程序使用“prefs:root=”非公共 URL 方案,这是一个私有实体。 App Store 不允许使用非公共 API,因为如果这些 API 发生变化,可能会导致糟糕的用户体验。 @MarcelT 根据第二个source Lito 提供的评论(您必须向下滚动到评论部分),Apple 不应该拒绝该应用程序?! 根据 Apple 爱斯基摩人的 forum post,prefs:root=
或 App-Prefs:root=
被视为私有 API,因此禁止使用并导致应用程序被拒绝。【参考方案3】:
iOS 9+
您无法直接从您的应用打开 Wi-Fi 设置选项卡。一般只允许您打开设置应用程序。
以下代码适用于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)
来源: Apple 开发者文档open
和openURL
在iOS 9
中实际上可以直接打开 Wi-Fi 设置选项卡(使用私有 API URL 方案),但这被认为是错误使用。
因此:请勿使用 App-Prefs:root
或 pref:root
URL 方案,因为它们会导致您的应用被 Apple 的审核检查拒绝。
来源: Apple 开发者论坛 post 来自 Apple 的爱斯基摩人。
iOS 11+
如果您需要连接到某个 Wi-Fi 网络NEHotspotConfigurationManager
可能会有所帮助。
来源:苹果技术问答QA1942
【讨论】:
是的,由于 Themis 解决方法,我的应用程序也被拒绝了。解释很清楚,即使苹果也不能保证它将来会起作用。恕我直言,应用程序不应有权访问 WiFi 设置。只允许在应用程序的设置选项卡中更改应用程序的使用设置,对于 WiFi 使用,这也是可能的。【参考方案4】:在 iOS 11 上我们不能再这样做了,我们可以打开设置:
if let url = URL(string:UIApplicationOpenSettingsURLString)
if UIApplication.shared.canOpenURL(url)
let url = UIApplication.shared.open(url, options: [:], completionHandler: nil)
【讨论】:
而不是直接到wifi屏幕?【参考方案5】:这个东西也适用于 iOS 10,但你必须在你的项目设置信息中添加 URL 类型。 URL 方案应该是首选 如果您需要我会分享屏幕截图,以便您轻松实现。
谢谢??
【讨论】:
【参考方案6】:对 iOS 10 及更高版本使用以下内容:
if let url = URL(string:"App-Prefs:root=Settings&path=General")
UIApplication.shared.openURL(url)
【讨论】:
顺便说一句:App-Prefs:
和 prefs:
URL 方案被认为是私有 API。它的使用只能作为iOS9
上的“错误”。只需使用 UIApplicationOpenSettingsURLString
作为 URL 字符串。来源:forum post 来自 Apples 的爱斯基摩人。
Apple 也会拒绝使用私有 API 的应用。【参考方案7】:
只需使用:
UIApplication.shared.openURL(URL(string:"prefs:root=WIFI")!)
【讨论】:
此“错误”仅适用于iOS 9
,并已于 iOS 10
修复。使用此错误会导致您的应用被拒绝。来源:forum post 来自 Apples 的爱斯基摩人。
如果您使用“prefs:root=",Apple 将拒绝您的应用以上是关于如何在 Swift 3 中打开 WIFI 设置的主要内容,如果未能解决你的问题,请参考以下文章
如何在Ubuntu下建立虚拟wifi热点供Android,Kindle