当用户按下按钮时,如何打开设置应用程序?

9

根据我对以下代码的理解:

NSURL* appUrl = [NSURL URLWithString: @"URL"];
[[UIApplication sharedApplication] openURL:appUrl];

当用户按下一个按钮时,我可以打开地图、YouTube、Safari、邮件、iTunes和应用商店。

但我想知道是否可能用这种方法打开设置应用程序。

基本上,当用户第一次打开我的应用程序时,我希望一个UIAlertView弹出来提醒用户如果需要可以更改特定的设置。他们要么按下“确定”或按下“设置”以跳转到设置应用程序。

我知道Apple在某些情况下会这样做,但开发人员是否有可能实现呢?


可能是从另一个应用程序打开设置应用程序的重复问题。 - Flexo
6个回答

16

根据 @bnduati 的回答,在 iOS 8 中,您可以使用以下代码在设置应用中打开您的应用程序设置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

旧回答:

从iOS 5.1到iOS 7,无法从另一个应用程序打开设置应用程序。

您可能需要调查这个框架以提供应用内设置。

还有许多其他讨论此主题的问题:

iPhone-如何将通过系统设置应用程序看到的设置包放入自己的应用程序中?

从应用程序启动iPhone设置屏幕?

如何在iPhone应用程序内向用户发送到主要iPhone设置屏幕


太棒了,感谢!顺便说一句,InAppSettingsKit 在应用内设置方面表现得非常好。 - Christian Gossain
在iOS 8+中,可以使用UIApplicationOpenSettingsURLString实现此功能。请参见@bnduati的下面的答案:https://dev59.com/DVHTa4cB1Zd3GeqPTJ4J#25311388 - Tim Arnold

9
在iOS 8及以上版本中,可以通过以下方式将用户发送到您的应用程序设置页面:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

6
您可以在iOS 5.0及更高版本上使用此功能:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

1
请粘贴一份来自文档的链接。 - Alex Terente
11
在iOS 5.1中,这个功能被禁用了。 - RPM
...并且在iOS 8中启用,使用UIApplicationOpenSettingsURLString - Tim Arnold
1
@TimArnold 不是技术上的正确... iOS方法会将您带到主设置屏幕。而现代的8版本会直接跳转到特定应用程序的设置界面,这并不总是所期望的。 - SikoSoft

3

我不确定这是否可行,但一个问题是用户需要返回到你的应用程序。你可以使用NSUserDefaults来创建自己的偏好设置视图,并将数据写入与偏好设置应用程序相同的文件中。

[[NSUserDefaults standardUserDefaults] setObject:value forKey:key];

[[NSUserDefaults standardUserDefaults] stringForKey:key]


1

Swift 语法:

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!)

0

迅速 3

private func showAlertPrivacy() {
    let alertController = UIAlertController(title: nil, message: "messagePrivacy", preferredStyle: .alert)
    let alertNo = UIAlertAction(title: "No", style: .default) { (_) in

    }
    alertController.addAction(alertNo)

    let alertSetting = UIAlertAction(title: "Settings", style: .default) { (_) in

        UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!, options: [:], completionHandler: { (_) in

        })
    }
    alertController.addAction(alertSetting)

    present(alertController, animated: true) { 

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接