在iOS9中以编程方式打开电话设置

在iOS9中以编程方式打开电话设置,ios,swift,settings,Ios,Swift,Settings,我最近有一个应用程序汇总到应用程序商店,他们拒绝批准我使用的以下代码打开手机设置: let url:NSURL! = NSURL(string : "prefs:root=") UIApplication.sharedApplication().openURL(url) 因此,我获得了以下代码()并获得批准: UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString

我最近有一个应用程序汇总到应用程序商店,他们拒绝批准我使用的以下代码打开手机设置:

let url:NSURL! = NSURL(string : "prefs:root=")
    UIApplication.sharedApplication().openURL(url)
因此,我获得了以下代码()并获得批准:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
不幸的是,它不能满足我的实际需要,因为它有时会打开我的应用程序设置,有时会打开手机设置


我需要一些东西来打开而不是只打开手机的设置

这将打开如下所示的设置页面

UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=Settings")!)

但不幸的是,在您的应用程序中使用此代码会导致审核过程被拒绝(请参见注释)。

在iOS 10中,“prefs”必须替换为“App prefs”。 然后,您可以使用此代码测试所有可能的URL

NSArray* urlStrings = @[@"prefs:root=<your_path>", @"App-Prefs:root=<your_path>"];
for(NSString* urlString in urlStrings){
    NSURL* url = [NSURL URLWithString:urlString];
    if([[UIApplication sharedApplication] canOpenURL:url]){
        [[UIApplication sharedApplication] openURL:url];
        break;
    }
}
NSArray*urlStrings=@[@“prefs:root=”,@“App-prefs:root=”;
for(NSString*URLSING中的URLSING){
NSURL*url=[NSURL URLWithString:urlString];
if([[UIApplication sharedApplication]canOpenURL:url]){
[[UIApplication sharedApplication]openURL:url];
打破
}
}

除了
UIApplicationOpenSettingsURLString
之外,没有批准的打开设置应用程序的方法。请尝试使用和@maddy,如果“UIApplicationOpenSettingsURLString”是打开设置的唯一方法,则可以。但奇怪的是,它有时会在根目录下打开手机设置应用程序,有时会在手机设置中打开应用程序设置。听起来更像是一个bug,因为没有关于何时打开哪个的规则。@karthik,谢谢你的提示,但并没有真正解决这个问题,因为我已经在使用其中的内容,但是得到了一个错误,而你提到的帖子没有涵盖。请检查此项:'NSURL(字符串:"prefs:root=…'使我的提交被苹果拒绝。如果您使用此代码,您的提交也可能被拒绝。@karthik那么,您的结果如何?@karthik我上个月成功提交了一个包含此代码的应用程序。您还可以在设置应用程序中获得更精确的页面,以获得更好的UX@karthik此解决方案不起作用对于iOS 10。我正在使用Xcode 8,swift 3。有其他解决方案吗?@LearnSwift根据我的研究,我得出结论,在iOS 10中不允许将用户从应用程序定向到设置应用程序。因此,您可以显示一些土司或警报,告诉用户手动转到设置应用程序。这合法吗?成功提交应用程序并不意味着目前,这是合法的。它可能最终会失败。找不到证据:(不允许使用'App Prefs',使用它可能会导致应用被拒绝。