iOS 跳轉到第三方應用或者設置頁面

最近在寫一個widget的小項目。功能是在通知欄上快速設置一些系統設置,比如wifi,藍牙,低電量模式。不過就遇到了下面咱們要討論的問題。如何跳轉?那么網上有很多資料。不過90%都是一樣的,另外10%又是一模一樣的。想找個東西太難。所以我要在這里面整理一下,這就是我寫這篇文章的意義。

跳轉方式一覽

目標 URL
電池電量 Prefs:root=BATTERY_USAGE
VPN Prefs:root=General&path=VPN (網上有很多寫的是prefs:root=General&path=Network/VPN,就用我寫的那個,親測可用)
個人熱點 Prefs:root=INTERNET_TETHERING
飛行模式 Prefs:root=AIRPLANE_MODE
鎖定 Prefs:root=General&path=AUTOLOCK
亮度 prefs:root=Brightness
時間設置 Prefs:root=General&path=DATE_AND_TIME
iCloud Prefs:root=CASTLE
iCloud備份 Prefs:root=CASTLE&path=STORAGE_AND_BACKUP
通用設置 Prefs:root=General
存儲空間 Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE
蜂窩數據 Prefs:root=MOBILE_DATA_SETTINGS_ID
Wi-Fi 設置 Prefs:root=WIFI
藍牙設置 Prefs:root=Bluetooth
定位設置 Prefs:root=Privacy&path=LOCATION
輔助功能 Prefs:root=General&path=ACCESSIBILITY
關于手機 Prefs:root=General&path=About
鍵盤設置 Prefs:root=General&path=Keyboard
顯示設置 Prefs:root=DISPLAY
語言設置 prefs:root=General&path=INTERNATIONAL
聲音設置 Prefs:root=Sounds
App Store 設置 Prefs:root=STORE
墻紙設置 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
系統更新 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 可以用以下方式來打開設置。

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
                       
   if ([[UIApplication sharedApplication] canOpenURL:url]) {  
                 
        [[UIApplication sharedApplication] openURL:url]; // iOS 9 的跳轉
   }

當然也可以這樣(iOS10 9 8 7 可以用這種方式)(這方法雖然iOS 10也可以用但是并不能去到藍牙、WIFI、電池,只能去到自身應用的系統設置。)

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];
    }

如果你是通知欄應用(如pin,Launcher)在iOS 10通知欄Widget可以像iOS 9正常跳轉,Pin、Launcher,都可以通過簡單地設置 URL Scheme 實現此功能,你可以繼續在通知中心直接跳轉至系統設置的特定頁面,比如蜂窩數據、WiFi、定位等等。只需將原來的 prefs 開頭改成 Prefs 即可。
需要注意的是,這個功能只在通知中心的 Today Widget(即插件)有效,在應用中則無法直接跳轉設置。
(如果你的是通知欄類應用可以用此辦法解決,iOS 10 可用)

NSURL*url=[NSURL URLWithString:@"Prefs:root=WIFI"]; 
[self.extensionContext openURL:url completionHandler:^(BOOL success) {

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

推薦閱讀更多精彩內容