歡迎訪問(wèn)我的博客muhlenXi,該文章出自我的博客。
導(dǎo)語(yǔ):
在項(xiàng)目中,有時(shí)需要跳轉(zhuǎn)到系統(tǒng)設(shè)置的某一個(gè)界面讓用戶去設(shè)置相關(guān)屬性。比如一個(gè)藍(lán)牙的APP需要檢測(cè)用戶是否打開(kāi)了藍(lán)牙,否則需要提醒用戶并跳轉(zhuǎn)到藍(lán)牙設(shè)置界面讓用戶去打開(kāi)藍(lán)牙。有時(shí)需要打開(kāi)自帶或第三方APP去操作。比如,打開(kāi)微信、支付寶等。
本文 已更新到 Xcode8.0 Swift3.0
關(guān)于適配
通過(guò)一張圖,我們可以查看到 2017-2-20 號(hào)用戶的系統(tǒng)版本的分布比例,所以我們只要是配到 9.0 和 9.0 以上就可以滿足大部分用戶了。最新系統(tǒng)版本分布圖傳送門

跳轉(zhuǎn)到系統(tǒng)設(shè)置
由于在iOS 10 以上 和 iOS 10 以下分別是通過(guò)不同的方法打開(kāi)URL的,所以我們要對(duì)系統(tǒng)版本做判斷操作!
舉例1:跳轉(zhuǎn)到 系統(tǒng)藍(lán)牙設(shè)置 界面
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)
}
}
打開(kāi)其他APP
舉例2:打開(kāi) App Store 應(yīng)用
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)
}
}
常用的第三方應(yīng)用都定義了不同的 URL Scheme,我們通過(guò) UIApplication.shared.open() 方法打開(kāi)相應(yīng)的URL,即可跳轉(zhuǎn)到對(duì)應(yīng)的 App 中。iOS10 以下的系統(tǒng)則是使用 UIApplication.shared.openURL() 方法)
舉例3:打開(kāi) 微信 應(yīng)用
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)
}
}
了解更多詳情,請(qǐng)下載本文 demo 研究!本文的 Demo 在 10.2.1 和 9.3.2 的真機(jī)上都測(cè)試過(guò),相關(guān)操作均能正常執(zhí)行!
本文demo
親測(cè)可以正常使用的 URL Scheme
系統(tǒng)設(shè)置
| 要跳轉(zhuǎn)的設(shè)置界面 | URL String | 備注 |
|---|---|---|
| WIFI | App-Prefs:root=WIFI | |
| Bluetooth | App-Prefs:root=Bluetooth | |
| 蜂窩移動(dòng)網(wǎng)絡(luò) | App-Prefs:root=MOBILE_DATA_SETTINGS_ID | |
| 個(gè)人熱點(diǎn) | App-Prefs:root=INTERNET_TETHERING | |
| VPN | App-Prefs:root=VPN | |
| 運(yùn)營(yíng)商 | App-Prefs:root=Carrier | |
| 通知 | App-Prefs:root=NOTIFICATIONS_ID | |
| 定位服務(wù) | App-Prefs:root=Privacy&path=LOCATION | |
| 通用 | App-Prefs:root=General | |
| 關(guān)于本機(jī) | App-Prefs:root=General&path=About | |
| 鍵盤 | App-Prefs:root=General&path=Keyboard | |
| 輔助功能 | App-Prefs:root=General&path=ACCESSIBILITY | |
| 語(yǔ)言與地區(qū) | 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 | |
| 音樂(lè) | App-Prefs:root=MUSIC | |
| 照相與照相機(jī) | App-Prefs:root=Photos | |
| FaceTime | App-Prefs:root=FACETIME | |
| 電池電量 | App-Prefs:root=BATTERY_USAGE | |
| 存儲(chǔ)空間 | App-Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE | |
| 顯示與亮度 | App-Prefs:root=DISPLAY | |
| 聲音設(shè)置 | App-Prefs:root=Sounds | |
| App Store | App-Prefs:root=STORE | |
| iCloud | App-Prefs:root=CASTLE | |
| 語(yǔ)言設(shè)置 | App-Prefs:root=General&path=INTERNATIONAL |
自帶 App 和第三方 App
| 要打開(kāi)的APP | URL Scheme | Bundle Identifier |
|---|---|---|
| 打10086 | tel://10086 | |
| App Store | itms-apps:// | |
| Safari | http://muhlenxi.com/ | |
| Maps | maps:// | |
| 備忘錄 | mobilenotes:// | |
| SMS | sms:// | |
| mailto:// | ||
| iBooks | ibooks:// | |
| Music | music:// | |
| Videos | videos:// | |
| mqq:// | ||
| 微信 | weixin:// | |
| 淘寶 | taobao:// | |
| 支付寶 | alipay:// | |
| 新浪微博 | sinaweibo:// | |
| 知乎 | zhihu:// |
后記
感謝閱讀,有什么問(wèn)題可以給我留言。如果覺(jué)得不錯(cuò)的話,可以點(diǎn)個(gè) Star 支持一下作者!本文不階段更新中...