iOS10 和iOS10以前 是两个概念
iOS跳转系统设置界面,分为iOS10和iOS10之前两种方法:
iOS10之前:
方法:对于iOS10之前,其跳转方法莫过于openURL,可参见UIApplication.h。
从其头文件,可见其方法,适用于iOS2.0~iOS10.0。(iOS10.0及之后的版本,并没有说放弃,说是建议使用新的方法openURL:options。)
用法:
//url -- 跳转设置-通用界面
NSURL*url=[NSURL URLWithString:@"prefs:root=General"];
//如果能够打开,则打开url
if ([[UIApplication sharedApplication]canOpenURL:url]) {
[[UIApplication sharedApplication]openURL:url];
}
以上方法,会打开设置-通用界面。其它页面,以此类推。
iOS10之后:
方法:对于iOS10及以后,我们可以用新的跳转方法openURL:options:可参见UIApplication.h。
对于options,目前来说,可直接传一个空字典。跳转结果的回调,则是在block里完成。
用法:
其用法基本不变,需要注意的是:其url需要添加App-,并且Prefs首字母需大写。
//url -- 跳转设置-通用界面
NSURL*url=[NSURL URLWithString:@"App-Prefs:root=General"];
//如果能够打开,则打开url
if ([[UIApplication sharedApplication]canOpenURL:url]) {
[[UIApplication sharedApplication]openURL:url options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"成功");
}
}];
}
URL:
跳转 | 写法 |
WiFi设置 | root=WIFI |
蓝牙设置 | root=Bluetooth |
蜂窝数据 | root=MOBILE_DATA_SETTINGS_ID |
个人热点 | root=INTERNET_TETHERING |
通知 | root=NOTIFICATIONS_ID |
通用 | root=General |
显示与亮度 | root=DISPLAY |
壁纸 | root=Wallpaper |
声音 | root=Sounds |
电池电量 | root=BATTERY_USAGE |
隐私 | root=Privacy |
iCloud | root=CASTLE |
iCloud备份 | root=CASTLE&path=BACKUP |
iTunesStore与AppStore | root=STORE |
存储空间 | root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE |
VPN | root=General&path=VPN |
定位设置 | root=Privacy&path=LOCATION |
软件更新 | root=General&path=SOFTWARE_UPDATE_LINK |
关于本机 | root=General&path=About |
辅助功能 | root=General&path=ACCESSIBILITY |
键盘设置 | root=General&path=Keyboard |
日期与时间 | root=General&path=DATE_AND_TIME |
语言 | root=General&path=INTERNATIONAL |
描述文件 | root=General&path=ManagedConfigurationList |
还原 | root=General&path=Reset |
CarPlay | root=General&path=CARPLAY |
FaceTime | root=FACETIME |
音乐 | root=MUSIC |
照片与相机 | root=Photos |
电话设置 | root=Phone |
Notes | root=NOTES |
root=TWITTER | |
拨打电话 | tel://10010 |
发送短信 | sms://10010 |
发送邮件 | mailto://1178752402@qq.com |
打开网址 | https://www.caichenghan.com |
补充
跳转到自己app权限页面:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication]canOpenURL:url]) {
[[UIApplication sharedApplication]openURL:url options:[NSDictionary dictionary] completionHandler:^(BOOL success) {
if (success) {
NSLog(@"成功");
}
}];
}
除此之外,还可通过设定app的bundle id进行跳转。
NSURL *url = [NSURL URLWithString:@"App-Prefs:root=com.jiadai.DemoOfAppTransform"];
if ([[UIApplication sharedApplication]canOpenURL:url]) {
[[UIApplication sharedApplication]openURL:url options:[NSDictionary dictionary] completionHandler:^(BOOL success) {
if (success) {
NSLog(@"成功");
}
}];
}
该方法,在iOS10.2.1/iPhone5s测试时发现:若设置已经被打开过,则可顺利跳转,否则第一次执行的时候会进入设置页面,而后才可以进入权限页面。