最近在寫一個widget的小項目梯醒。功能是在通知欄上快速設(shè)置一些系統(tǒng)設(shè)置,比如wifi腌紧,藍(lán)牙茸习,低電量模式。不過就遇到了下面咱們要討論的問題壁肋。如何跳轉(zhuǎn)号胚?那么網(wǎng)上有很多資料。不過90%都是一樣的浸遗,另外10%又是一模一樣的猫胁。想找個東西太難。所以我要在這里面整理一下跛锌,這就是我寫這篇文章的意義弃秆。
跳轉(zhuǎn)方式一覽
目標(biāo) | URL |
---|---|
電池電量 | Prefs:root=BATTERY_USAGE |
VPN | Prefs:root=General&path=VPN (網(wǎng)上有很多寫的是prefs:root=General&path=Network/VPN,就用我寫的那個,親測可用) |
個人熱點 | Prefs:root=INTERNET_TETHERING |
飛行模式 | Prefs:root=AIRPLANE_MODE |
鎖定 | Prefs:root=General&path=AUTOLOCK |
亮度 | prefs:root=Brightness |
時間設(shè)置 | Prefs:root=General&path=DATE_AND_TIME |
iCloud | Prefs:root=CASTLE |
iCloud備份 | Prefs:root=CASTLE&path=STORAGE_AND_BACKUP |
通用設(shè)置 | Prefs:root=General |
存儲空間 | Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE |
蜂窩數(shù)據(jù) | Prefs:root=MOBILE_DATA_SETTINGS_ID |
Wi-Fi 設(shè)置 | Prefs:root=WIFI |
藍(lán)牙設(shè)置 | Prefs:root=Bluetooth |
定位設(shè)置 | Prefs:root=Privacy&path=LOCATION |
輔助功能 | Prefs:root=General&path=ACCESSIBILITY |
關(guān)于手機(jī) | Prefs:root=General&path=About |
鍵盤設(shè)置 | Prefs:root=General&path=Keyboard |
顯示設(shè)置 | Prefs:root=DISPLAY |
語言設(shè)置 | prefs:root=General&path=INTERNATIONAL |
聲音設(shè)置 | Prefs:root=Sounds |
App Store 設(shè)置 | Prefs:root=STORE |
墻紙設(shè)置 | Prefs:root=Wallpaper |
music | prefs:root=MUSIC |
Nike + iPod | prefs:root=NIKE_PLUS_IPOD |
Notes | prefs:root=NOTES |
Safari | prefs:root=Safari |
Siri | prefs:root=General&path=Assistant |
系統(tǒng)更新 | prefs:root=General&path=SOFTWARE_UPDATE_LINK |
打開電話 | Mobilephone:// |
世界時鐘 | Clock-worldclock:// |
鬧鐘 | Clock-alarm:// |
秒表 | Clock-stopwatch:// |
倒計時 | Clock-timer:// |
打開相冊 | Photos:// |
FaceTime | Prefs:root=FACETIME |
使用方式
在程序中髓帽,iOS 9 8 7 可以用以下方式來打開設(shè)置驾茴。
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url]; // iOS 9 的跳轉(zhuǎn)
}
當(dāng)然也可以這樣(iOS10 9 8 7 可以用這種方式)(這方法雖然iOS 10也可以用但是并不能去到藍(lán)牙、WIFI氢卡、電池锈至,只能去到自身應(yīng)用的系統(tǒng)設(shè)置。)
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
下面的方法是iOS10 新增的api
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
}
如果你是通知欄應(yīng)用(如pin译秦,Launcher)在iOS 10通知欄Widget可以像iOS 9正常跳轉(zhuǎn)峡捡,Pin击碗、Launcher,都可以通過簡單地設(shè)置 URL Scheme 實現(xiàn)此功能们拙,你可以繼續(xù)在通知中心直接跳轉(zhuǎn)至系統(tǒng)設(shè)置的特定頁面稍途,比如蜂窩數(shù)據(jù)、WiFi砚婆、定位等等械拍。只需將原來的 prefs 開頭改成 Prefs 即可。
需要注意的是装盯,這個功能只在通知中心的 Today Widget(即插件)有效坷虑,在應(yīng)用中則無法直接跳轉(zhuǎn)設(shè)置。
(如果你的是通知欄類應(yīng)用可以用此辦法解決埂奈,iOS 10 可用)
NSURL*url=[NSURL URLWithString:@"Prefs:root=WIFI"];
[self.extensionContext openURL:url completionHandler:^(BOOL success) {
}];