我们如何以编程方式直接进入 iOS 设置应用程序的以下任何屏幕
3 回答
更新
正如其他用户指出的那样,此解决方案不再适用于 iOS10。如果有人知道如何让它在 iOS10 中运行,请告诉我们。
iOS < 10 的解决方案:
要打开(您自己的应用程序的)设置,您可以使用UIApplicationOpenSettingsURLString
常量:
if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
UIApplication.sharedApplication().openURL(settingsURL)
}
这是在 iOS 8 中引入的,因此您可以在运行 iOS8 或更高版本的设备上使用它。但这只会打开您自己的应用程序的设置。不是键盘设置。如果您的应用没有自己的设置,它只会在其主页上打开“设置”应用。
在过去(iOS 5.1 之前),您可以打开设置 URL 并直接转到设置应用程序中的几乎任何子页面。Apple 在 iOS 5.1 中删除了此功能。
然而,它似乎在 iOS 8 和 9 中再次起作用。Apple 没有正式记录它,但它似乎可以工作,尽管我不确定这有多可靠。它适用于我的 iOS 9.1 iPhone,但不适用于模拟器。
所以,谨慎,你可以试试这个打开键盘设置:
if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard") {
UIApplication.sharedApplication().openURL(settingsURL)
}
或者更深入:
if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard/KEYBOARDS") {
UIApplication.sharedApplication().openURL(settingsURL)
}
编辑:
正如 iHulk 在评论中提到的,您可能必须添加prefs
到项目的 Info.plist 文件中的 URL 方案才能使其工作。
从 iOS 10 开始,应该使用“App-Prefs:root”而不是“prefs:root”。请参阅下面的目标 C 代码。对此进行了测试,代码运行良好,但 Apple 可能会因此拒绝该应用程序。
注意:正如所指出的,这仅适用于 ios 10
NSString *settingsUrl= @"App-Prefs:root=General&path=Keyboard";
if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:settingsUrl] options:@{} completionHandler:^(BOOL success) {
NSLog(@"URL opened");
}];
}
我从 Apple 审阅者那里得到的最新消息:您的应用托管扩展,但它不符合应用扩展编程指南。
具体来说,您的应用程序将用户直接带到键盘设置页面,而不是将用户带到您的应用程序的特定设置页面。请确保您的应用仅将用户带到您的应用设置页面。
当我重定向到:prefs:root=General&path=Keyboard/KEYBOARDS