通常我們做App的時候,或多或少會需要請求使用者允許某些功能的使用許可,比如相機、相簿、定位功能、行事曆……等等。
但在我們發出請求的當下,使用者很可能會無情的給予拒絕….這不能怪使用者,尤其是在iOS這個很重視隱私的平台上(在Android平台上有聽過一些比較誇張的請求…)
而比如說「定位功能」,如果今天打開Google Map,但是使用者拒絕了定位功能,沒有了定位功能就沒辦法使用導航功能,有些App就會跳出來下面的提示。
通過這個提示「在設置>隱私中打開定位服務,來允許地圖確定您當前的位置」,來提示使用者要去設定中打開定位服務。
但這樣的一個提示,對一些使用者來說,其實操作起來並不簡單,甚至會感覺到困難。
那麼我們要怎樣可以讓使用者更容易的去做打開定位功能呢?
URL Scheme
我們可以通過URL Scheme的方式來進行跳轉。
1 2 3 4 5 6 7 |
if #available(iOS 10.0, *) { UIApplication.shared.openURL(URL(string: "App-Prefs:root=你App的BundleID")!) } else { UIApplication.shared.openURL(URL(string: "prefs:root=Privacy&path=LOCATION")!) } |
目前了解Swift 2和Swift3的語法會不太一樣,並且Swift 2會需要在URL Scheme中設定為prefs(有聽到其他開發者提過)
但目前來看,大家應該都在用Swift 3來開發、甚至Swift4了。
通過openURL將使用者的界面跳轉至App相關的設置畫面,這樣對使用者來說簡單多了。
1 |
UIApplication.shared.openURL(URL(string: "App-Prefs:root=你App的BundleID")! |
也可以通過canOpenURL()方法,來判斷是不是該連結已經失靈。
1 |
UIApplication.shared.canOpenURL(URL(string:"App-Prefs:root=你App的BundleID")!) |
網路上看到有其他相關的URL可以參考一下,有些可能已經失靈了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
电池电量 Prefs:root=BATTERY_USAGE 通用设置 Prefs:root=General 存储空间 Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE 蜂窝数据 Prefs:root=MOBILE_DATA_SETTINGS_ID Wi-Fi 设置 Prefs:root=WIFI 蓝牙设置 Prefs:root=Bluetooth 定位设置 Prefs:root=Privacy&path=LOCATION 辅助功能 Prefs:root=General&path=ACCESSIBILITY 关于手机 Prefs:root=General&path=About 键盘设置 Prefs:root=General&path=Keyboard 显示设置 Prefs:root=DISPLAY 声音设置 Prefs:root=Sounds App Store 设置 Prefs:root=STORE 墙纸设置 Prefs:root=Wallpaper 打开电话 Mobilephone:// 世界时钟 Clock-worldclock:// 闹钟 Clock-alarm:// 秒表 Clock-stopwatch:// 倒计时 Clock-timer:// 打开相册 Photos:// |