iOS跳转系统设置和打开其他APP

欢迎访问我的博客muhlenXi,该文章出自我的博客。

导语:

在项目中,有时需要跳转到系统设置的某一个界面让用户去设置相关属性。比如一个蓝牙的APP需要检测用户是否打开了蓝牙,否则需要提醒用户并跳转到蓝牙设置界面让用户去打开蓝牙。有时需要打开自带或第三方APP去操作。比如,打开微信、支付宝等。

本文 已更新到 Xcode8.0 Swift3.0

关于适配

通过一张图,我们可以查看到 2017-2-20 号用户的系统版本的分布比例,所以我们只要是配到 9.0 和 9.0 以上就可以满足大部分用户了。最新系统版本分布图传送门

选项列表图

跳转到系统设置

由于在iOS 10 以上iOS 10 以下分别是通过不同的方法打开URL的,所以我们要对系统版本做判断操作!

举例1:跳转到 系统蓝牙设置 界面

let urlStr = "App-Prefs:root=Bluetooth"
if let url = URL(string:urlStr) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(url)
    }
}

打开其他APP

举例2:打开 App Store 应用

let urlStr = "itms-apps://"
if let url = URL(string:urlStr) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(url)
    }
}

常用的第三方应用都定义了不同的 URL Scheme,我们通过 UIApplication.shared.open() 方法打开相应的URL,即可跳转到对应的 App 中。iOS10 以下的系统则是使用 UIApplication.shared.openURL() 方法

举例3:打开 微信 应用

let urlStr = "weixin://"
if let url = URL(string:urlStr) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(url)
    }
}

了解更多详情,请下载本文 demo 研究!本文的 Demo 在 10.2.19.3.2 的真机上都测试过,相关操作均能正常执行!

本文demo

GitHub传送

亲测可以正常使用的 URL Scheme

系统设置

要跳转的设置界面 URL String 备注
WIFI App-Prefs:root=WIFI
Bluetooth App-Prefs:root=Bluetooth
蜂窝移动网络 App-Prefs:root=MOBILE_DATA_SETTINGS_ID
个人热点 App-Prefs:root=INTERNET_TETHERING
VPN App-Prefs:root=VPN
运营商 App-Prefs:root=Carrier
通知 App-Prefs:root=NOTIFICATIONS_ID
定位服务 App-Prefs:root=Privacy&path=LOCATION
通用 App-Prefs:root=General
关于本机 App-Prefs:root=General&path=About
键盘 App-Prefs:root=General&path=Keyboard
辅助功能 App-Prefs:root=General&path=ACCESSIBILITY
语言与地区 App-Prefs:root=General&path=INTERNATIONAL
还原 App-Prefs:root=General&path=Reset
墙纸 App-Prefs:root=Wallpaper
Siri App-Prefs:root=SIRI
隐私 App-Prefs:root=Privacy
Safari App-Prefs:root=SAFARI
音乐 App-Prefs:root=MUSIC
照相与照相机 App-Prefs:root=Photos
FaceTime App-Prefs:root=FACETIME
电池电量 App-Prefs:root=BATTERY_USAGE
存储空间 App-Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE
显示与亮度 App-Prefs:root=DISPLAY
声音设置 App-Prefs:root=Sounds
App Store App-Prefs:root=STORE
iCloud App-Prefs:root=CASTLE
语言设置 App-Prefs:root=General&path=INTERNATIONAL

自带 App 和第三方 App

要打开的APP URL Scheme Bundle Identifier
打10086 tel://10086
App Store itms-apps://
Safari http://muhlenxi.com/
Maps maps://
备忘录 mobilenotes://
SMS sms://
Mail mailto://
iBooks ibooks://
Music music://
Videos videos://
QQ mqq://
微信 weixin://
淘宝 taobao://
支付宝 alipay://
新浪微博 sinaweibo://
知乎 zhihu://

后记

感谢阅读,有什么问题可以给我留言。如果觉得不错的话,可以点个 Star 支持一下作者!本文不阶段更新中...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,314评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • 知我者谓我心忧,不知我者谓我何求。 -----《诗经》 其实,我一直觉得我本该自卑的,尽管我没有,但大部分人...
    马小小军阅读 209评论 0 1
  • 主题:播种 问题:回想朋友对自己有什么深刻的影响?告诉TA,感谢TA在你身上曾经的播种。 Theme: Plant...
    每天都是正能量阅读 225评论 0 1
  • 我的今生遇见你,是我前世修来的福气。 修一世的尘缘,那一生我虔诚的祈福,不为了却凡尘轮回的劫,不为消除现世种下的业...
    墨灵卷阅读 394评论 0 1