從APP跳轉到系統設置界面的解決方案

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容