9

我们如何以编程方式直接进入 iOS 设置应用程序的以下任何屏幕

键盘屏幕 在此处输入图像描述

4

3 回答 3

16

更新

正如其他用户指出的那样,此解决方案不再适用于 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 方案才能使其工作。

于 2015-10-28T11:00:36.180 回答
9

从 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");
    }];
}
于 2017-02-01T06:41:32.323 回答
1

我从 Apple 审阅者那里得到的最新消息:您的应用托管扩展,但它不符合应用扩展编程指南。

具体来说,您的应用程序将用户直接带到键盘设置页面,而不是将用户带到您的应用程序的特定设置页面。请确保您的应用仅将用户带到您的应用设置页面。

当我重定向到:prefs:root=General&path=Keyboard/KEYBOARDS

于 2016-05-12T17:06:50.850 回答