2010-11-03 81 views
9

從我用這樣的代碼明白:如何在用戶按下按鈕時打開「設置」應用程序?

NSURL* appUrl = [NSURL URLWithString: @"URL"]; 
[[UIApplication sharedApplication] openURL:appUrl]; 

我可以打開地圖,YouTube上,Safari瀏覽器,郵件,iTunes和App Store中,當用戶說按下按鈕。

但我想知道是否可以使用此方法打開設置應用程序。

基本上,第一次用戶打開我的應用程序我想要一個UIAlertView彈出來讓用戶知道他們可以更改特定的設置,如果他們想要的話,或者他們按下確定或他們按設置將他們帶到設置應用程序。

我知道Apple在某些情況下會這樣做,但開發人員可以這麼做嗎?

+0

的可能重複[從另一個應用程序打開設置應用程序](http://stackoverflow.com/questions/5655674/opening-the-settings-app-from-another-app) – Flexo 2011-10-15 21:08:21

回答

16

按@ bnduati的回答,在iOS中8,你可以使用下面的代碼在設置應用程序來打開應用程序的設置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 

老回答:

從iOS 5.1到iOS 7 ,無法從其他應用程序打開設置應用程序。

您可能想要調查this framework以提供應用內設置。

有相當討論這個主題的其他幾個問題:

iPhone - how to put Settings bundle seen through System Settings App into your own App?

Launch iPhone setting screen from Application?

How to send a user to the main iPhone Settings screen from within your iPhone App

+0

真棒謝謝!InAppSettingsKit在應用程序設置中很適合使用 – cgossain 2010-11-03 23:48:31

+0

這可以在iOS 8+中使用'UIApplicationOpenSettingsURLString'。請參閱下面的@ bnduati的答案:http://stackoverflow.com/a/25311388/1148702 – 2014-12-22 18:20:22

3

我不知道這是否可行,但有一個問題是用戶需要導航回您的應用程序。您可以改爲使用您自己的首選項視圖,該視圖可以使用NSUserDefaults將其寫入與首選項應用程序將使用的文件相同的文件。

[[NSUserDefaults standardUserDefaults] setObject:value forKey:key];

[[NSUserDefaults standardUserDefaults] stringForKey:key]

6

您可以在iOS 5.0使用及更高版本:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]]; 
+1

請粘貼文檔中的鏈接。 – 2011-11-11 10:28:39

+11

這在iOS 5.1 – RPM 2012-04-03 21:25:33

+0

中被禁用...並且在iOS 8中通過'UIApplicationOpenSettingsURLString'啓用 – 2014-12-22 18:24:07

9

在iOS系統中8,以後你可以將用戶發送到您的應用程序的設置以下列方式:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 
1

斯威夫特語法:

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 
0

斯威夫特3

private func showAlertPrivacy() { 
    let alertController = UIAlertController(title: nil, message: "messagePrivacy", preferredStyle: .alert) 
    let alertNo = UIAlertAction(title: "No", style: .default) { (_) in 

    } 
    alertController.addAction(alertNo) 

    let alertSetting = UIAlertAction(title: "Settings", style: .default) { (_) in 

     UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!, options: [:], completionHandler: { (_) in 

     }) 
    } 
    alertController.addAction(alertSetting) 

    present(alertController, animated: true) { 

    } 
} 
相關問題