Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开键盘';在iOS';从另一个应用程序以编程方式设置应用程序_Ios_Ios Keyboard Extension - Fatal编程技术网

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

打开键盘';在iOS';从另一个应用程序以编程方式设置应用程序,ios,ios-keyboard-extension,Ios,Ios Keyboard Extension,我们如何以编程方式直接进入iOS设置应用程序下面提到的任何屏幕 更新 正如其他用户所指出的,这个解决方案不再适用于iOS10。如果有人知道如何在iOS10中工作,请告诉我们 iOS解决方案

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


更新

正如其他用户所指出的,这个解决方案不再适用于iOS10。如果有人知道如何在iOS10中工作,请告诉我们

iOS解决方案<10:

要打开(您自己的应用程序)的设置,您可以使用
ui应用程序开放设置surlstring
常量:

if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
    UIApplication.sharedApplication().openURL(settingsURL)
}
这是在iOS 8中引入的,因此您可以在运行iOS 8或更高版本的设备上使用它。但这只会打开你自己应用程序的设置。不是键盘设置。如果你的应用没有自己的设置,它只会在主页上打开设置应用

在过去的日子里(在iOS 5.1之前),你可以打开一个设置URL,直接进入设置应用程序中的几乎任何子页面。苹果在iOS 5.1中删除了这一功能

然而,它似乎在iOS 8和iOS 9中再次起作用。苹果公司并没有正式的文档记录,但它似乎有效,尽管我不确定这是否可靠。它可以在我的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重定向到:prefs:root=General&path=Keyboard/KEYBOARDS时,应该使用“App-prefs:root”而不是“prefs:root”。参见下面的目标C代码。经过测试,代码运行良好,但苹果可能会因此拒绝该应用。
注意:如前所述,这只适用于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");
    }];
}

无论如何,在iOS 8中这样做就像Fleksy在iOS 8和iOS 9中那样。你在iOS 8上试过吗?我手头没有iOS8设备来测试它。也许这也适用于iOS 8ok。。我试着做它的模拟器,但它不工作,只是在iOS9设备上测试,它正在工作。我会在iOS 8设备上检查它,并会让您知道它是否在工作。。谢谢..什么都没发生,canOpenURL返回了false。刚刚发现一个黑客,如果你在URL方案中添加“prefs”,那么这个URL就开始工作了。没错,在iOS 10中不起作用。有什么解决办法吗?@mamba,你在这里没有提到黑暗释放之类的事情吗?这很奇怪,因为Flesky键盘允许这样做