从另一个应用程序以编程方式在 iOS 设置应用程序中打开键盘设置屏幕

Posted

技术标签:

【中文标题】从另一个应用程序以编程方式在 iOS 设置应用程序中打开键盘设置屏幕【英文标题】:Open Keyboard's settings screen in iOS's settings app programmatically from another app 【发布时间】:2015-10-28 10:16:38 【问题描述】:

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

【问题讨论】:

【参考方案1】:

更新

正如其他用户指出的那样,此解决方案不再适用于 iOS10。如果有人知道如何让它在 iOS10 中运行,请告诉我们。

iOS

要打开(您自己的应用程序的)设置,您可以使用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 在 cmets 中提到的那样,您可能必须将 prefs 添加到项目的 Info.plist 文件中的 URL 方案中才能使其工作。

【讨论】:

无论如何都可以在 iOS 8 中做到这一点,就像 Fleksy 在 iOS 8 和 iOS 9 中一样。 你在iOS8上试过了吗?我手头没有 iOS8 设备来测试它。也许这也适用于 iOS 8 好的..我试图做模拟器,但它不工作,刚刚在 iOS 9 设备上测试,它工作正常。我会在 iOS 8 设备上检查它,如果它在它上面运行,我会告诉你.. 谢谢.. 什么也没发生,canOpenURL 返回 false。刚刚发现一个 Hack,如果你在 URL 方案中添加“prefs”,那么这个 URL 就会开始工作。 对了,iOS 10 不支持。还有解决办法吗?【参考方案2】:

从 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");
    ];

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

@mamba,你这里没有关于黑暗发布之类的东西吗? 这很奇怪,因为 Flesky 键盘允许这样做

以上是关于从另一个应用程序以编程方式在 iOS 设置应用程序中打开键盘设置屏幕的主要内容,如果未能解决你的问题,请参考以下文章

IOS - 如何以编程方式阻止从另一个应用程序打开一个应用程序?

ios - 从另一个功能以编程方式启用按钮

iOS:以编程方式从另一个视图调用 onTapGesture

以编程方式从另一个 Android 应用程序中清除应用程序数据

我如何以编程方式从另一种方法单击 JavaFX 中的按钮?

ios icloud 在设备中以编程方式设置开/关