
在iOS10之前如果我们想从APP内部跳转到系统设置界面,比如跳转到WIFI设置界面,我们可以通过下面这句代码来实现跳转:
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
[[UIApplication sharedApplication] openURL:url];
}
但是在iOS 10中,上面代码却失灵了,不起作用了,网上很多朋友都说在iOS 10中系统设置跳转被禁用了
但事实的真相却是我看到有好多APP在iOS 10中依然可以正常跳转到系统设置界面
经过一番Google之下,终于找到了原因:
iOS 10把之前 prefs 开头的 URL Schemes 改成了App-Prefs开头
将以上代码简单修改一下就可以实现从APP内部跳转到WIFI设置界面:
#define iOS10 ([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0)
NSString * urlString = @"App-Prefs:root=WIFI";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlString]]) {
if (iOS10) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:@{} completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
}
这里顺便记录下当前iOS10所支持的一些跳转:
| 跳转 | 写法 |
|---|---|
| 电池电量 | App-Prefs:root=BATTERY_USAGE |
| 无线局域网 | App-Prefs:root=WIFI |
| 蓝牙 | App-Prefs:root=Bluetooth |
| 蜂窝移动网络 | App-Prefs:root=MOBILE_DATA_SETTINGS_ID |
| 个人热点 | App-Prefs:root=INTERNET_TETHERING |
| 运营商 | App-Prefs:root=Carrier |
| 通知 | App-Prefs:root=NOTIFICATIONS_ID |
| 通用 | App-Prefs:root=General |
| 通用-关于本机 | App-Prefs:root=General&path=About |
| 通用-键盘 | App-Prefs:root=General&path=Keyboard |
| 通用-辅助功能 | App-Prefs:root=General&path=ACCESSIBILITY |
| 通用-语言与地区 | App-Prefs:root=General&path=INTERNATIONAL |
| 通用-还原 | App-Prefs:root=Reset |
| 墙纸 | App-Prefs:root=Wallpaper |
| Siri | App-Prefs:root=SIRI |
| 隐私 | App-Prefs:root=Privacy |
| Safari | App-Prefs:root=SAFARI |
| 音乐 | App-Prefs:root=MUSIC |
| 音乐-均衡器 | App-Prefs:root=MUSIC&path=com.apple.Music:EQ |
| 照片与相机 | App-Prefs:root=Photos |
| FaceTime | App-Prefs:root=FACETIME |
参考链接:
iOS10禁用系统设置的URL scheme的原因是什么?
https://github.com/cyanzhong/app-tutorials/blob/master/schemes.md