从APP跳转到系统设置界面的解决方案

从APP跳转到系统设置界面的解决方案_第1张图片

iOS10之前如果我们想从APP内部跳转到系统设置界面,比如跳转到WIFI设置界面,我们可以通过下面这句代码来实现跳转:

    NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
    
    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        [[UIApplication sharedApplication] openURL:url];
    }

但是在iOS 10中,上面代码却失灵了,不起作用了,网上很多朋友都说在iOS 10中系统设置跳转被禁用了

但事实的真相却是我看到有好多APPiOS 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

你可能感兴趣的:(从APP跳转到系统设置界面的解决方案)