Opening the Settings app from another app

前端 未结 17 2191
傲寒
傲寒 2020-11-22 01:37

Okay, I know that there are many question about it, but they are all from many time ago.

So. I know that it is possible because the Map app does it.

In the M

相关标签:
17条回答
  • 2020-11-22 01:58

    In Swift 3 all I needed is this (here for example redirect to my app notifications):

    if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, completionHandler: .none)
        } else {
            // Fallback on earlier versions
        }
    }
    

    Source: phynet gist.

    This worked with me only when settings is in background. It will redirect you to your app notification settings but if settings wasn't running in the background it will just redirect you to notification settings in general.

    0 讨论(0)
  • 2020-11-22 01:59

    Add this to your class,

     public class func showSettingsAlert(title:String,message:String,onVC viewController:UIViewController,onCancel:(()->())?){
                YourClass.show2ButtonsAlert(onVC: viewController, title: title, message: message, button1Title: "Settings", button2Title: "Cancel", onButton1Click: {
                    if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString){
                        UIApplication.sharedApplication().openURL(settingsURL)
                    }
                    }, onButton2Click: {
                        onCancel?()
                })
            }
    
     public class func show2ButtonsAlert(onVC viewController:UIViewController,title:String,message:String,button1Title:String,button2Title:String,onButton1Click:(()->())?,onButton2Click:(()->())?){
                dispatch_async(dispatch_get_main_queue()) {
                    let alert : UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    
                    alert.addAction(UIAlertAction(title: button1Title, style:.Default, handler: { (action:UIAlertAction) in
                        onButton1Click?()
                    }))
    
                    alert.addAction(UIAlertAction(title: button2Title, style:.Default, handler: { (action:UIAlertAction) in
                        onButton2Click?()
                    }))
    
                    viewController.presentViewController(alert, animated: true, completion: nil)
                }
            }
    

    Call like this,

    YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
      print("canceled")
    })
    
    0 讨论(0)
  • 2020-11-22 02:00

    You can use this on iOS 5.0 and later: This no longer works.

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
    
    0 讨论(0)
  • 2020-11-22 02:00

    Swift 3:

    guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
    if #available(iOS 10.0, *) {
      UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
      // Fallback on earlier versions
      UIApplication.shared.openURL(url)
    }
    
    0 讨论(0)
  • 2020-11-22 02:02

    Swift 4

    I prefer to open setting in a safer way,

    if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {
    
        UIApplication.shared.open(settingUrl)
    }
    else {
        print("Setting URL invalid")
    }
    
    0 讨论(0)
  • 2020-11-22 02:07

    Seems like you can use the prefs:<area> URL to open the settings and go to specific areas. Apple could change these and break your app so always check if you can open them first.

    From this article they have listed some of them for iOS 13.1:

    Settings URLs

    iCloud

    • iCloud: prefs:root=CASTLE
    • iCloud Backup: prefs:root=CASTLE&path=BACKUP

    Wireless Radios

    • Wi-Fi: prefs:root=WIFI
    • Bluetooth: prefs:root=Bluetooth
    • Cellular: prefs:root=MOBILE_DATA_SETTINGS_ID

    Personal Hotspot

    • Personal Hotspot: prefs:root=INTERNET_TETHERING
    • Personal Hotspot ⇾ Family Sharing: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
    • Personal Hotspot ⇾ Wi-Fi Password: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

    VPN

    • VPN: prefs:root=General&path=VPN

    Notifications

    • Notifications: prefs:root=NOTIFICATIONS_ID
    • Notifications ⇾ Siri Suggestions: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

    Sounds

    • Sounds: prefs:root=Sounds
    • Ringtone: prefs:root=Sounds&path=Ringtone

    Do Not Disturb

    • Do Not Disturb: prefs:root=DO_NOT_DISTURB
    • Do Not Disturb ⇾ Allow Calls From: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

    Screen Time

    • Screen Time: prefs:root=SCREEN_TIME
    • Screen Time ⇾ Downtime: prefs:root=SCREEN_TIME&path=DOWNTIME
    • Screen Time ⇾ App Limits: prefs:root=SCREEN_TIME&path=APP_LIMITS
    • Screen Time ⇾ Always Allowed: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

    General

    • General: prefs:root=General
    • General ⇾ About: prefs:root=General&path=About
    • General ⇾ Software Update: prefs:root=General&path=SOFTWARE_UPDATE_LINK
    • General ⇾ CarPlay: prefs:root=General&path=CARPLAY
    • General ⇾ Background App Refresh: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
    • General ⇾ Multitasking (iPad-only): prefs:root=General&path=MULTITASKING
    • General ⇾ Date & Time: prefs:root=General&path=DATE_AND_TIME
    • General ⇾ Keyboard: prefs:root=General&path=Keyboard
    • General ⇾ Keyboard ⇾ Keyboards: prefs:root=General&path=Keyboard/KEYBOARDS
    • General ⇾ Keyboard ⇾ Hardware Keyboard: prefs:root=General&path=Keyboard/Hardware%20Keyboard
    • General ⇾ Keyboard ⇾ Text Replacement: prefs:root=General&path=Keyboard/USER_DICTIONARY
    • General ⇾ Keyboard ⇾ One Handed Keyboard: prefs:root=General&path=Keyboard/ReachableKeyboard
    • General ⇾ Language & Region: prefs:root=General&path=INTERNATIONAL
    • General ⇾ Dictionary: prefs:root=General&path=DICTIONARY
    • General ⇾ Profiles: prefs:root=General&path=ManagedConfigurationList
    • General ⇾ Reset: prefs:root=General&path=Reset

    Control Center

    • Control Center: prefs:root=ControlCenter
    • Control Center ⇾ Customize Controls: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

    Display

    • Display: prefs:root=DISPLAY
    • Display ⇾ Auto Lock: prefs:root=DISPLAY&path=AUTOLOCK
    • Display ⇾ Text Size: prefs:root=DISPLAY&path=TEXT_SIZE

    Accessibility

    • Accessibility: prefs:root=ACCESSIBILITY

    Wallpaper

    • Wallpaper: prefs:root=Wallpaper

    Siri

    • Siri: prefs:root=SIRI

    Apple Pencil

    • Apple Pencil (iPad-only): prefs:root=Pencil

    Face ID

    • Face ID: prefs:root=PASSCODE

    Emergency SOS

    • Emergency SOS: prefs:root=EMERGENCY_SOS

    Battery

    • Battery: prefs:root=BATTERY_USAGE
    • Battery ⇾ Battery Health (iPhone-only): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

    Privacy

    • Privacy: prefs:root=Privacy
    • Privacy ⇾ Location Services: prefs:root=Privacy&path=LOCATION
    • Privacy ⇾ Contacts: prefs:root=Privacy&path=CONTACTS
    • Privacy ⇾ Calendars: prefs:root=Privacy&path=CALENDARS
    • Privacy ⇾ Reminders: prefs:root=Privacy&path=REMINDERS
    • Privacy ⇾ Photos: prefs:root=Privacy&path=PHOTOS
    • Privacy ⇾ Microphone: prefs:root=Privacy&path=MICROPHONE
    • Privacy ⇾ Speech Recognition: prefs:root=Privacy&path=SPEECH_RECOGNITION
    • Privacy ⇾ Camera: prefs:root=Privacy&path=CAMERA
    • Privacy ⇾ Motion: prefs:root=Privacy&path=MOTION\

    App Store

    • App Store: prefs:root=STORE
    • App Store ⇾ App Downloads: prefs:root=STORE&path=App%20Downloads
    • App Store ⇾ Video Autoplay: prefs:root=STORE&path=Video%20Autoplay

    Wallet

    • Wallet: prefs:root=PASSBOOK

    Passwords & Accounts

    • Passwords & Accounts: prefs:root=ACCOUNTS_AND_PASSWORDS
    • Passwords & Accounts ⇾ Fetch New Data: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
    • Passwords & Accounts ⇾ Add Account: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

    Mail

    • Mail: prefs:root=MAIL
    • Mail ⇾ Preview: prefs:root=MAIL&path=Preview
    • Mail ⇾ Swipe Options: prefs:root=MAIL&path=Swipe%20Options
    • Mail ⇾ Notifications: prefs:root=MAIL&path=NOTIFICATIONS
    • Mail ⇾ Blocked: prefs:root=MAIL&path=Blocked
    • Mail ⇾ Muted Thread Action: prefs:root=MAIL&path=Muted%20Thread%20Action
    • Mail ⇾ Blocked Sender Options: prefs:root=MAIL&path=Blocked%20Sender%20Options
    • Mail ⇾ Mark Addresses: prefs:root=MAIL&path=Mark%20Addresses
    • Mail ⇾ Increase Quote Level: prefs:root=MAIL&path=Increase%20Quote%20Level
    • Mail ⇾ Include Attachments with Replies: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
    • Mail ⇾ Signature: prefs:root=MAIL&path=Signature
    • Mail ⇾ Default Account: prefs:root=MAIL&path=Default%20Account

    Contacts

    • Contacts: prefs:root=CONTACTS

    Calendar

    • Calendar: prefs:root=CALENDAR
    • Calendar ⇾ Alternate Calendars: prefs:root=CALENDAR&path=Alternate%20Calendars
    • Calendar ⇾ Sync: prefs:root=CALENDAR&path=Sync
    • Calendar ⇾ Default Alert Times: prefs:root=CALENDAR&path=Default%20Alert%20Times
    • Calendar ⇾ Default Calendar: prefs:root=CALENDAR&path=Default%20Calendar

    Notes

    • Notes: prefs:root=NOTES
    • Notes ⇾ Default Account: prefs:root=NOTES&path=Default%20Account
    • Notes ⇾ Password: prefs:root=NOTES&path=Password
    • Notes ⇾ Sort Notes By: prefs:root=NOTES&path=Sort%20Notes%20By
    • Notes ⇾ New Notes Start With: prefs:root=NOTES&path=New%20Notes%20Start%20With
    • Notes ⇾ Sort Checked Items: prefs:root=NOTES&path=Sort%20Checked%20Items
    • Notes ⇾ Lines & Grids: prefs:root=NOTES&path=Lines%20%26%20Grids
    • Notes ⇾ Access Notes from Lock Screen: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

    Reminders

    • Reminders: prefs:root=REMINDERS
    • Reminders ⇾ Default List: prefs:root=REMINDERS&path=DEFAULT_LIST

    Voice Memos

    • Voice Memos: prefs:root=VOICE_MEMOS

    Phone

    • Phone: prefs:root=Phone

    Messages

    • Messages: prefs:root=MESSAGES

    FaceTime

    • FaceTime: prefs:root=FACETIME

    Maps

    • Maps: prefs:root=MAPS
    • Maps ⇾ Driving & Navigation: prefs:root=MAPS&path=Driving%20%26%20Navigation
    • Maps ⇾ Transit: prefs:root=MAPS&path=Transit

    Compass

    • Compass: prefs:root=COMPASS

    Measure

    • Measure: prefs:root=MEASURE

    Safari

    • Safari: prefs:root=SAFARI
    • Safari ⇾ Content Blockers: prefs:root=SAFARI&path=Content%20Blockers
    • Safari ⇾ Downloads: prefs:root=SAFARI&path=DOWNLOADS
    • Safari ⇾ Close Tabs: prefs:root=SAFARI&path=Close%20Tabs
    • Safari ⇾ Clear History and Data: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
    • Safari ⇾ Page Zoom: prefs:root=SAFARI&path=Page%20Zoom
    • Safari ⇾ Request Desktop Website: prefs:root=SAFARI&path=Request%20Desktop%20Website
    • Safari ⇾ Reader: prefs:root=SAFARI&path=Reader
    • Safari ⇾ Camera: prefs:root=SAFARI&path=Camera
    • Safari ⇾ Microphone: prefs:root=SAFARI&path=Microphone
    • Safari ⇾ Location: prefs:root=SAFARI&path=Location
    • Safari ⇾ Advanced: prefs:root=SAFARI&path=ADVANCED

    News

    • News: prefs:root=NEWS

    Health

    • Health: prefs:root=HEALTH

    Shortcuts

    • Shortcuts: prefs:root=SHORTCUTS

    Music

    • Music: prefs:root=MUSIC
    • Music ⇾ Cellular Data: prefs:root=MUSIC&path=com.apple.Music:CellularData
    • Music ⇾ Optimize Storage: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
    • Music ⇾ EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
    • Music ⇾ Volume Limit: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

    TV

    • Settings ⇾ TV: prefs:root=TVAPP

    Photos

    • Photos: prefs:root=Photos

    Camera

    • Camera: prefs:root=CAMERA
    • Camera ⇾ Record Video: prefs:root=CAMERA&path=Record%20Video
    • Camera ⇾ Record Slo-mo: prefs:root=CAMERA&path=Record%20Slo-mo

    Books

    • Books: prefs:root=IBOOKS

    Game Center

    • Game Center: prefs:root=GAMECENTER
    0 讨论(0)
提交回复
热议问题