在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
网友评论