現在很多APP都需要獲取用戶權限,例如,允許調用位置信息,讀取短信,撥打電話,開啟WIFI,掉頭攝像頭等,用戶不允許APP獲取這些權限的時候.最好的用戶體驗是,直接跳轉到系統設置界面,讓用戶自己設置.
跳轉到自己的項目中
在需要調轉的按鈕動作中添加如下的代碼,就會跳轉到設置中自己的app的設置界面,這里會有通知和位置權限的設置
NSURL * url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];
if([[UIApplicationsharedApplication] canOpenURL:url]) {
NSURL*url =[NSURLURLWithString:UIApplicationOpenSettingsURLString];
[[UIApplicationsharedApplication] openURL:url];
}
測試注意:新項目測試,需要請求一下位置權限或者通知權限,才可以跳進自己的app設置里面,如果沒有任何權限請求,就只能跳到系統的設置界面.
//其他網頁中提及到:
如果要跳轉第三方應用的設置界面中,使用prefs:root=boundleId的方式,boundleId是第三方應用的boundleId。
跳轉到系統設置的其他界面
在點擊跳轉的按鈕動作中添加如下代碼:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
在項目中的info中添加 URL types
添加 URL Schemes 為 prefs的url
如圖:
這樣點擊就可以跳轉到wifi設置界面.
跳轉到其他的界面的字段:
1 //數組中的字典的內容就是直接跳轉的語句 2 //例如跳轉到照片:prefs:root=Photos 3 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Photos"]]; 4 //跳轉系統設置根目錄中的項目使用如下的方法: 5 NSArray *array = @[ 6 @{@"系統設置":@"prefs:root=INTERNET_TETHERING"}, 7 @{@"WIFI設置":@"prefs:root=WIFI"}, 8 @{@"藍牙設置":@"prefs:root=Bluetooth"}, 9 @{@"系統通知":@"prefs:root=NOTIFICATIONS_ID"}, 10 @{@"通用設置":@"prefs:root=General"}, 11 @{@"顯示設置":@"prefs:root=DISPLAY&BRIGHTNESS"}, 12 @{@"壁紙設置":@"prefs:root=Wallpaper"}, 13 @{@"聲音設置":@"prefs:root=Sounds"}, 14 @{@"隱私設置":@"prefs:root=privacy"}, 15 @{@"APP Store":@"prefs:root=STORE"}, 16 @{@"Notes":@"prefs:root=NOTES"}, 17 @{@"Safari":@"prefs:root=Safari"}, 18 @{@"Music":@"prefs:root=MUSIC"}, 19 @{@"photo":@"prefs:root=Photos"} 20 ]; 21 NSURL * url = [NSURL URLWithString:[_array[index] allValues].firstObject]; 22 [[UIApplication sharedApplication]openURL:url];
要是想跳到設置內部的位置,可以用&path+路徑:
1 //如果需要繼續向項目內層進行跳轉,可以通過添加path路徑的方式,如下: 2 NSArray *array = @[ 3 @{@"關於本機":@"prefs:root=General&path=About"}, 4 @{@"軟件升級":@"prefs:root=General&path=SOFTWARE_UPDATE_LINK"}, 5 @{@"日期時間":@"prefs:root=General&path=DATE_AND_TIME"}, 6 @{@"Accessibility":@"prefs:root=General&path=ACCESSIBILITY"}, 7 @{@"鍵盤設置":@"prefs:root=General&path=Keyboard"}, 8 @{@"VPN":@"prefs:root=General&path=VPN"}, 9 @{@"壁紙設置":@"prefs:root=Wallpaper"}, 10 @{@"聲音設置":@"prefs:root=Sounds"}, 11 @{@"隱私設置":@"prefs:root=privacy"}, 12 @{@"APP Store":@"prefs:root=STORE"}, 13 @{@"還原設置":@"prefs:root=General&path=Reset"}, 14 @{@"應用通知":@"prefs:root=NOTIFICATIONS_ID&path=應用的boundleId"} 15 ]; 16 NSURL * url = [NSURL URLWithString:[array[index] allValues].firstObject]; 17 [[UIApplication sharedApplication]openURL:url];
其他界面跳轉的字段:
About — prefs:root=General&path=About
Accessibility — prefs:root=General&path=ACCESSIBILITY
AirplaneModeOn— prefs:root=AIRPLANE_MODE
Auto-Lock — prefs:root=General&path=AUTOLOCK
Brightness — prefs:root=Brightness
Bluetooth — prefs:root=General&path=Bluetooth
Date& Time — prefs:root=General&path=DATE_AND_TIME
FaceTime — prefs:root=FACETIME
General— prefs:root=General
Keyboard — prefs:root=General&path=Keyboard
iCloud — prefs:root=CASTLE iCloud
Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP
International — prefs:root=General&path=INTERNATIONAL
Location Services — prefs:root=LOCATION_SERVICES
Music — prefs:root=MUSIC
Music Equalizer — prefs:root=MUSIC&path=EQ
Music VolumeLimit— prefs:root=MUSIC&path=VolumeLimit
Network — prefs:root=General&path=Network
Nike + iPod — prefs:root=NIKE_PLUS_IPOD
Notes — prefs:root=NOTES
Notification — prefs:root=NOTIFICATIONS_ID
Phone — prefs:root=Phone
Photos — prefs:root=Photos
Profile — prefs:root=General&path=ManagedConfigurationList
Reset — prefs:root=General&path=Reset
Safari — prefs:root=Safari Siri — prefs:root=General&path=Assistant
Sounds — prefs:root=Sounds
SoftwareUpdate— prefs:root=General&path=SOFTWARE_UPDATE_LINK
Store — prefs:root=STORE
Twitter — prefs:root=TWITTER
Usage — prefs:root=General&path=USAGE
VPN — prefs:root=General&path=Network/VPN
Wallpaper — prefs:root=Wallpaper
Wi-Fi — prefs:root=WIFI
Setting—prefs:root=INTERNET_TETHERING