轉(zhuǎn)載自:iOS 10 應用內(nèi)跳轉(zhuǎn)到系統(tǒng)設置
在iOS開發(fā)中,有時會有跳轉(zhuǎn)系統(tǒng)設置界面的需求,例如提示用戶打開藍牙或者WIFI劣领,提醒用戶打開推送或者位置權(quán)限等耘拇。在iOS6之后撵颊,第三方應用需要跳轉(zhuǎn)系統(tǒng)設置界面,需要在URL type中添加一個prefs值惫叛,需要設置prefs
設置跳轉(zhuǎn)有三種方式倡勇,每一種的使用場景都不同。 并且你在跳轉(zhuǎn)到系統(tǒng)中自己應用下面設置的時候嘉涌,你的應用要提前至少申請了某一個權(quán)限妻熊,如通知,定位等仑最。否則扔役,會引起崩潰。
- 方式一:
prefs:root=某項服務
- 方式二:
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)方法非常簡單序仙。本文重點講解url 怎么設置
二、跳轉(zhuǎn)到哪里去溯街?(系統(tǒng)的設置诱桂,系統(tǒng)中自己應用下面的設置)
-
方式一:
** iOS系統(tǒng)版本 <= iOS7** , 只能跳轉(zhuǎn)到 系統(tǒng)設置頁面
NSURL *url= [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];
跳轉(zhuǎn)到: 隱私-定位服務。
prefs:root=某項服務
系統(tǒng)設置:prefs:root=INTERNET_TETHERING
WIFI設置:prefs:root=WIFI
藍牙設置:prefs:root=Bluetooth
系統(tǒng)通知:prefs:root=NOTIFICATIONS_ID
通用設置:prefs:root=General
顯示設置:prefs:root=DISPLAY&BRIGHTNESS
壁紙設置:prefs:root=Wallpaper
聲音設置:prefs:root=Sounds
隱私設置: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"
麥克風:"prefs:root=Privacy&path=MICROPHONE"
相冊:"prefs:root=Privacy&path=PHOTOS"
這種跳轉(zhuǎn)方式呈昔,都是跳轉(zhuǎn)到系統(tǒng)的設置界面挥等。
-
方式二 :
** iOS系統(tǒng)版本 >= iOS8** ,支持跳轉(zhuǎn)到第三方應用的設置界面中
使用prefs:root=bundleID ,bundleID是你第三方應用工程的唯一ID
局限性:只支持iOS8,iOS9系統(tǒng),在iOS10系統(tǒng)上堤尾,不會跳轉(zhuǎn)肝劲。 在iOS7系統(tǒng)上,僅僅只是跳轉(zhuǎn)到設置應用,不推薦使用辞槐。如果需要繼續(xù)向項目內(nèi)層進行跳轉(zhuǎn)掷漱,可以通過添加path路徑的方式,如下:
關(guān)于本機:prefs:root=General&path=About 軟件升級:prefs:root=General&path=SOFTWARE_UPDATE_LINK 日期時間:prefs:root=General&path=DATE_AND_TIME Accessibility:prefs:root=General&path=ACCESSIBILITY 鍵盤設置:prefs:root=General&path=Keyboard VPN:prefs:root=General&path=VPN 壁紙設置:@"prefs:root=Wallpaper 聲音設置:prefs:root=Sounds 隱私設置:prefs:root=privacy APP Store:prefs:root=STORE 還原設置:prefs:root=General&path=Reset 應用通知:prefs:root=NOTIFICATIONS_ID&path=應用的boundleId
更多參數(shù)字段自己查詢
-
方式三
** iOS系統(tǒng)版本 >= iOS10**榄檬,支持跳轉(zhuǎn)到自己應用設置卜范,不支持跳轉(zhuǎn)到系統(tǒng)設置
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
UIApplicationOpenSettingsURLString
字段,是在iOS8上才提供的鹿榜,支持iOS8,iOS9,iOS10系統(tǒng)海雪,推薦使用。
iOS系統(tǒng)版本>= iOS10舱殿,支持跳轉(zhuǎn)到自己應用設置奥裸,不支持跳轉(zhuǎn)到系統(tǒng)設置
只認
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
跳轉(zhuǎn)。
而 prefs:root=bundleID
和 prefs:root=服務
都將不起作用沪袭。
總結(jié)一下:
- 方式一:
prefs:root=某項服務
適用于 小于 iOS10的系統(tǒng)湾宙; - 方式二:
prefs:root=bundleID
適用于 大于等于iOS8系統(tǒng),小于iOS10的系統(tǒng) - 方式三:
UIApplicationOpenSettingsURLString
適用于 大于等于iOS8的系統(tǒng)