现在很多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