AppleはiOS 11で多くのアプリ設定をアプリパスに移動したようです。設定でアプリパスをプログラムで開く方法は?"App-Prefs:root=\(Bundle.main.bundleIdentifier!)"
を試しましたが、動作しないようです。
私の質問は次のものに固有であることに注意してください:設定でアプリのパスを開く方法:[〜#〜] not [〜#〜]設定を開く方法
探しているコードは次のとおりです。
if let url = URL(string: UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
Swift 4.2、iOS 12
以下の機能を使用すると、設定のみを開くことができます。
_extension UIApplication {
...
@discardableResult
static func openAppSettings() -> Bool {
guard
let settingsURL = URL(string: UIApplication.openSettingsURLString),
UIApplication.shared.canOpenURL(settingsURL)
else {
return false
}
UIApplication.shared.open(settingsURL)
return true
}
}
_
使用法:UIApplication.openAppSettings()
しかし、注意してください[〜#〜] not [〜#〜] use "non-public URL scheme"、例えば:_prefs:root=
_または_App-Prefs:root
_。そうしないと、アプリが拒否されます。これは最近、設定のwifiセクションへのディープリンクを作成しようとしていたときに起こりました。
また、古いiOSバージョンと新しいiOSバージョンの両方で機能させるには、次のようにします。
if let url = URL(string:UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}
}
openURL
はiOS 10以降廃止されているため、次の使用をお勧めします。
if let url = URL(string:UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: { success in
log.debug("Open app settings success: \(success)")
})
}
}