IOS 10(ベータ1)で「設定」URLスキームを機能させることができません。
同じアプリがiOS 9で正常に動作するため、正しく設定されています。
これはバグですか、それとも名前が変更または削除されましたか?
コード:
let settingsUrl = NSURL(string: "prefs:root=SOMETHING")
if let url = settingsUrl {
UIApplication.sharedApplication().openURL(url)
}
更新:(ベータ2)
ベータ2ではまだ機能しません。
バグと思われます。たとえば、iOS 10でGameCenterを使用して誰かを招待したいが、iMessageにログインしていない場合は、ログインを求めるポップアップが表示されます。ただし、[設定]ボタンは何もしません。
IOS 10の場合、prefs
をApp-Prefs
に置き換えるだけです
以下のコードはiOS 8、9、10で機能します
Swift 3.0およびXcode> = 8.1
if #available(iOS 10.0, *)
{
UIApplication.shared.openURL(URL(string: "App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.shared.openURL(URL(string: "prefs:root=SOMETHING")!)
}
Swift 2.2
if #available(iOS 10.0, *)
{
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=SOMETHING")!)
}
私のために働く。
ハッピーコーディング????
UIApplicationOpenSettingsURLString
を使用してyour ownアプリの設定(iOS 8以降で利用可能)を開くことができますが、その他のprefs:
URLはプライベートAPIと見なされ、使用するとアプリが拒否されます。
Prefs:root=SOMETHING
を使用できます
iOS 10は設定のURLスキームを更新しました。「p」を大文字にする必要があります。
参照: https://github.com/cyanzhong/app-tutorials/blob/master/schemes.md
注意:ウィジェットでのみ機能し、アプリでは機能しません。 (iOS 10.0.2)
@Saumil Shahのソリューションはアプリで機能し、より便利です。
記録については、位置情報サービスについてはApp-Prefs:root=Privacy&path=LOCATION
は私のために働きました。シミュレータではなくデバイスでテストした場合。
うまくいかなかったものをリストアップするつもりはありません。長いリストです。
位置情報サービスが無効になっている、または権限が拒否されている、または決定されていないことを想定した使用例:
if !CLLocationManager.locationServicesEnabled() {
if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
// If general location settings are disabled then open general location settings
UIApplication.shared.openURL(url)
}
} else {
if let url = URL(string: UIApplicationOpenSettingsURLString) {
// If general location settings are enabled then open location settings for the app
UIApplication.shared.openURL(url)
}
}
誰かが「灰色の領域」のAPIに興味がある場合は、以下を使用できます。
//url = "prefs:root=SOMETHING"
[[LSApplicationWorkspace defaultWorkspace] openSensitiveURL:url withOptions:nil];
これはあなたが望むものをあなたに与えます。 うまく隠す、そしてiOS 10で動作します。
これはiOS 11では利用できません。次のような設定を開くだけです。
if let url = URL(string:UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}