Открытие приложения «Настройки» из другого приложения - PullRequest
155 голосов
/ 14 апреля 2011

Хорошо, я знаю, что есть много вопросов по этому поводу, но все они давно.

Итак. Я знаю, что это возможно, потому что приложение Map делает это.

В приложении «Карта», если я отключаю локализацию для этого приложения, оно отправляет мне сообщение, и если я нажимаю «ОК», откроется «Приложение настроек». И мой вопрос: как это возможно? Как открыть «Настройка приложения» из моего собственного приложения?

По сути, мне нужно сделать то же самое, если пользователь отключит расположение моего приложения, я покажу ему сообщение с сообщением о том, что откроет «Настройка приложения»

Ответы [ 15 ]

1 голос
/ 29 января 2018

SWIFT 4.0

'openURL' устарел в iOS 10.0: пожалуйста, используйте openURL: параметры: завершениеHandler: вместо

UIApplication.shared.open(URL.init(string: UIApplicationOpenSettingsURLString)! , options: [:], completionHandler: nil)
1 голос
/ 31 мая 2016

Вы можете использовать приведенный ниже код для него.

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
0 голосов
/ 20 сентября 2017

Протестировано с iOS 10. Работает

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

Happy Coding:)

0 голосов
/ 24 февраля 2017

Swift Вы можете использовать следующую функцию, чтобы открыть приложение «Настройки» со страницей Bluetooth

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

Опять же, это не приведет к открытию настроек приложения. Это откроет приложение настроек с Bluetooth, так как это глубокая связь с Bluetooth.

0 голосов
/ 12 августа 2016

Добавьте это к вашему классу,

 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)
            }
        }

Позвоните вот так,

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
...