在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