轉(zhuǎn)載自:iOS 10 應(yīng)用內(nèi)跳轉(zhuǎn)到系統(tǒng)設(shè)置
在iOS開發(fā)中,有時(shí)會有跳轉(zhuǎn)系統(tǒng)設(shè)置界面的需求,例如提示用戶打開藍(lán)牙或者WIFI,提醒用戶打開推送或者位置權(quán)限等。在iOS6之后,第三方應(yīng)用需要跳轉(zhuǎn)系統(tǒng)設(shè)置界面,需要在URL type中添加一個(gè)prefs值,需要設(shè)置prefs
設(shè)置跳轉(zhuǎn)有三種方式,每一種的使用場景都不同。 并且你在跳轉(zhuǎn)到系統(tǒng)中自己應(yīng)用下面設(shè)置的時(shí)候,你的應(yīng)用要提前至少申請了某一個(gè)權(quán)限,如通知,定位等。否則,會引起崩潰。
- 方式一:
prefs:root=某項(xiàng)服務(wù)
- 方式二:
prefs:root=bundleID
- 方式三:
UIApplicationOpenSettingsURLString
本篇針對iOS7、iOS8、iOS9、iOS10,來介紹其中區(qū)別。
一、跳轉(zhuǎn)方法
iOS系統(tǒng)版本 < 10.0
NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
if( [[UIApplication sharedApplication]canOpenURL:url] ) {
[[UIApplication sharedApplication]openURL:url];
}
iOS系統(tǒng)版本 >= 10.0
if( [[UIApplication sharedApplication]canOpenURL:url] ) {
[[UIApplication sharedApplication]openURL:url options:@{}completionHandler:^(BOOL success) {
}];
}
可以看出,跳轉(zhuǎn)方法非常簡單。本文重點(diǎn)講解url 怎么設(shè)置
二、跳轉(zhuǎn)到哪里去?(系統(tǒng)的設(shè)置,系統(tǒng)中自己應(yīng)用下面的設(shè)置)
-
方式一:
** iOS系統(tǒng)版本 <= iOS7** , 只能跳轉(zhuǎn)到 系統(tǒng)設(shè)置頁面
NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
跳轉(zhuǎn)到: 隱私-定位服務(wù)。
prefs:root=某項(xiàng)服務(wù)
系統(tǒng)設(shè)置:prefs:root=INTERNET_TETHERING
WIFI設(shè)置:prefs:root=WIFI
藍(lán)牙設(shè)置:prefs:root=Bluetooth
系統(tǒng)通知:prefs:root=NOTIFICATIONS_ID
通用設(shè)置:prefs:root=General
顯示設(shè)置:prefs:root=DISPLAY&BRIGHTNESS
壁紙?jiān)O(shè)置:prefs:root=Wallpaper
聲音設(shè)置:prefs:root=Sounds
隱私設(shè)置:prefs:root=privacy
蜂窩網(wǎng)路:prefs:root=MOBILE_DATA_SETTINGS_ID
音樂:prefs:root=MUSIC
APP Store:prefs:root=STORE
Notes:prefs:root=NOTES
Safari:prefs:root=Safari
Music:prefs:root=MUSIC
photo:prefs:root=Photos
Camera:"prefs:root=Privacy&path=CAMERA"
麥克風(fēng):"prefs:root=Privacy&path=MICROPHONE"
相冊:"prefs:root=Privacy&path=PHOTOS"
這種跳轉(zhuǎn)方式,都是跳轉(zhuǎn)到系統(tǒng)的設(shè)置界面。
-
方式二 :
** iOS系統(tǒng)版本 >= iOS8** ,支持跳轉(zhuǎn)到第三方應(yīng)用的設(shè)置界面中
使用prefs:root=bundleID ,bundleID是你第三方應(yīng)用工程的唯一ID
局限性:只支持iOS8,iOS9系統(tǒng),在iOS10系統(tǒng)上,不會跳轉(zhuǎn)。 在iOS7系統(tǒng)上,僅僅只是跳轉(zhuǎn)到設(shè)置應(yīng)用,不推薦使用。如果需要繼續(xù)向項(xiàng)目內(nèi)層進(jìn)行跳轉(zhuǎn),可以通過添加path路徑的方式,如下:
關(guān)于本機(jī):prefs:root=General&path=About 軟件升級:prefs:root=General&path=SOFTWARE_UPDATE_LINK 日期時(shí)間:prefs:root=General&path=DATE_AND_TIME Accessibility:prefs:root=General&path=ACCESSIBILITY 鍵盤設(shè)置:prefs:root=General&path=Keyboard VPN:prefs:root=General&path=VPN 壁紙?jiān)O(shè)置:@"prefs:root=Wallpaper 聲音設(shè)置:prefs:root=Sounds 隱私設(shè)置:prefs:root=privacy APP Store:prefs:root=STORE 還原設(shè)置:prefs:root=General&path=Reset 應(yīng)用通知:prefs:root=NOTIFICATIONS_ID&path=應(yīng)用的boundleId
更多參數(shù)字段自己查詢
-
方式三
** iOS系統(tǒng)版本 >= iOS10**,支持跳轉(zhuǎn)到自己應(yīng)用設(shè)置,不支持跳轉(zhuǎn)到系統(tǒng)設(shè)置
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
UIApplicationOpenSettingsURLString
字段,是在iOS8上才提供的,支持iOS8,iOS9,iOS10系統(tǒng),推薦使用。
iOS系統(tǒng)版本>= iOS10,支持跳轉(zhuǎn)到自己應(yīng)用設(shè)置,不支持跳轉(zhuǎn)到系統(tǒng)設(shè)置
只認(rèn)
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
跳轉(zhuǎn)。
而 prefs:root=bundleID
和 prefs:root=服務(wù)
都將不起作用。
總結(jié)一下:
- 方式一:
prefs:root=某項(xiàng)服務(wù)
適用于 小于 iOS10的系統(tǒng); - 方式二:
prefs:root=bundleID
適用于 大于等于iOS8系統(tǒng),小于iOS10的系統(tǒng) - 方式三:
UIApplicationOpenSettingsURLString
適用于 大于等于iOS8的系統(tǒng)