美文网首页
iOS 16 跳转系统设置相应页面

iOS 16 跳转系统设置相应页面

作者: Kpengs | 来源:发表于2023-07-04 10:57 被阅读0次

前言

有个需求是根据App未打开权限跳转相应的设置页面,如WIFI,蓝牙,通知等等.
经过调研后有以下结论

iOS 10 之后苹果加强了对权限和隐私的控制,不允许App跳转到相应的设置页面,建议是跳转到相应App的设置界面如下示例图:
应用设置页

此方式仅需要使用代码

//跳转App应用设置
if let url = URL(string: UIApplication.openSettingsURLString) {
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

注:此方法,必须App有相应权限才会跳转,如果是一个新的App没用调取任何权限则只会跳转到iOS设置首页,如果App调用了定位,通知,则会跳转到应用设置页且展示定位和通知的选项

跳转到相应页面

那么跳转到相应页面的需求是否能实现呢?

是可以的!

首先我们看看iOS 10 以后网络上的资料

打开通用设置: App-Prefs:root=General
打开关于本机: App-Prefs:root=General&path=About
打开软件更新: App-Prefs:root=General&path=SOFTWARE_UPDATE_LINK
打开网络设置: App-Prefs:root=General&path=Network
打开Wi-Fi设置: App-Prefs:root=WIFI
打开蓝牙设置: App-Prefs:root=Bluetooth
打开移动数据设置: App-Prefs:root=MOBILE_DATA_SETTINGS_ID
打开运营商设置: App-Prefs:root=Carrier
打开个人热点设置: App-Prefs:root=INTERNET_TETHERING
打开声音和振动设置: App-Prefs:root=Sounds
打开显示和亮度设置: App-Prefs:root=Brightness
打开壁纸设置: App-Prefs:root=Wallpaper
打开Siri设置: App-Prefs:root=SIRI
打开Touch ID和密码设置: App-Prefs:root=TOUCHID_PASSCODE
打开Face ID和密码设置: App-Prefs:root=PASSCODE
打开隐私设置: App-Prefs:root=Privacy
打开位置服务设置: App-Prefs:root=LOCATION_SERVICES
打开日期和时间设置: App-Prefs:root=General&path=DATE_AND_TIME
打开iCloud设置: App-Prefs:root=CASTLE
打开iCloud存储空间设置: App-Prefs:root=CASTLE&path=STORAGE_AND_BACKUP

在最新的系统中 这样设置无效,只会跳转到首页
经过查询资料后发现,在文章发布日期时用
App-prefs:WIFI格式的字符串是可以跳转的
如:App-prefs:WIFI,App-prefs: Bluetooth,App-prefs: INTERNET_TETHERING

示例代码:

        let url = URL(string: "App-prefs:WIFI")!
        if UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(url)
        }

总结

目前官方推荐的实现方式是跳转App应用设置页面,但是要实现跳转相应的设置页面也是有方法做到的(相关资料说此方法被苹果官方认定为私有API,有上架被拒绝的风险,所以在使用并且上架时需和领导或产品进行讨论)

个人建议 使用跳转App应用设置的方案基本是可以实现相应的需求的,在不是必须要跳转到系统的设置页时建议使用方案一,避免被拒绝风险.

相关文章

网友评论

      本文标题:iOS 16 跳转系统设置相应页面

      本文链接:https://www.haomeiwen.com/subject/ouacudtx.html