iOS 10 應用內跳轉到系統設置


在iOS開發中,有時會有跳轉系統設置界面的需求,例如提示用戶打開藍牙或者WIFI,提醒用戶打開推送或者位置權限等。在iOS6之后,第三方應用需要跳轉系統設置界面,需要在URL type中添加一個prefs值,如下圖:
需要設置prefs
QjIfMvb.png!web.png
設置跳轉有三種方式,每一種的使用場景都不同。 並且你在跳轉到系統中自己應用下面設置的時候,你的應用要提前至少申請了某一個權限,如通知,定位等。否則,會引起崩潰。

  • 方式一:prefs:root=某項服務
  • 方式二:prefs:root=bundleID
  • 方式三: UIApplicationOpenSettingsURLString 
    本篇針對iOS7、iOS8、iOS9、iOS10,來介紹其中區別。

一、跳轉方法

iOS系統版本 < 10.0

NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
if( [[UIApplication sharedApplication]canOpenURL:url] ) {
   [[UIApplication sharedApplication]openURL:url];
}

iOS系統版本 >=  10.0

if( [[UIApplication sharedApplication]canOpenURL:url] ) {
    [[UIApplication sharedApplication]openURL:url options:@{}completionHandler:^(BOOL        success) {
    }];
}

可以看出,跳轉方法非常簡單。本文重點講解url 怎么設置

二、跳轉到哪里去?(系統的設置,系統中自己應用下面的設置)

  • 方式一:

** iOS系統版本 <= iOS7** ,  只能跳轉到 系統設置頁面

NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];

跳轉到:  隱私-定位服務。 
prefs:root=某項服務

 系統設置:prefs:root=INTERNET_TETHERING
 WIFI設置:prefs:root=WIFI
 藍牙設置:prefs:root=Bluetooth
 系統通知:prefs:root=NOTIFICATIONS_ID
 通用設置:prefs:root=General
 顯示設置:prefs:root=DISPLAY&BRIGHTNESS
 壁紙設置:prefs:root=Wallpaper
 聲音設置:prefs:root=Sounds
 隱私設置:prefs:root=privacy
 蜂窩網路:prefs:root=MOBILE_DATA_SETTINGS_ID
 音樂:prefs:root=MUSIC
 APP Store:prefs:root=STORE
 Notes:prefs:root=NOTES
 Safari:prefs:root=Safari
 Music:prefs:root=MUSIC
 photo":prefs:root=Photos

這種跳轉方式,都是跳轉到系統的設置界面。

  • 方式二 :

** iOS系統版本 >= iOS8** ,支持跳轉到第三方應用的設置界面中
使用prefs:root=bundleID ,bundleID是你第三方應用工程的唯一ID
局限性:只支持iOS8,iOS9系統,在iOS10系統上,不會跳轉。 在iOS7系統上,僅僅只是跳轉到設置應用,不推薦使用。

如果需要繼續向項目內層進行跳轉,可以通過添加path路徑的方式,如下:

關於本機:prefs:root=General&path=About
軟件升級:prefs:root=General&path=SOFTWARE_UPDATE_LINK
日期時間:prefs:root=General&path=DATE_AND_TIME
Accessibility:prefs:root=General&path=ACCESSIBILITY
鍵盤設置:prefs:root=General&path=Keyboard
VPN:prefs:root=General&path=VPN
壁紙設置:@"prefs:root=Wallpaper
聲音設置:prefs:root=Sounds
隱私設置:prefs:root=privacy
APP Store:prefs:root=STORE
還原設置:prefs:root=General&path=Reset
應用通知:prefs:root=NOTIFICATIONS_ID&path=應用的boundleId

更多參數字段自己查詢

  • 方式三

** iOS系統版本 >= iOS10**,支持跳轉到自己應用設置,不支持跳轉到系統設置

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

UIApplicationOpenSettingsURLString字段,是在iOS8上才提供的,支持iOS8,iOS9,iOS10系統,推薦使用。
iOS系統版本>= iOS10,支持跳轉到自己應用設置,不支持跳轉到系統設置
只認

 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 

跳轉。
prefs:root=bundleID prefs:root=服務 都將不起作用。

總結一下:

  • 方式一:prefs:root=某項服務        適用於 小於 iOS10的系統;
  • 方式二:prefs:root=bundleID       適用於 大於等於iOS8系統,小於iOS10的系統
  • 方式三:UIApplicationOpenSettingsURLString    適用於 大於等於iOS8的系統

參考鏈接:http://www.jianshu.com/p/767c409c50e6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM