【发布时间】:2014-08-05 10:27:40
【问题描述】:
是否可以通过按钮或任何在 iOS 8 中的应用程序从您自己的应用程序访问设置应用程序。我听说它在 iOS 5 中已经老化,是真的吗?如果没有,iOS 8 中的方法是否发生了变化?如果没有其他方法可以解决此问题,最好的解决方法是什么?
【问题讨论】:
标签: ios uiapplication ios8
是否可以通过按钮或任何在 iOS 8 中的应用程序从您自己的应用程序访问设置应用程序。我听说它在 iOS 5 中已经老化,是真的吗?如果没有,iOS 8 中的方法是否发生了变化?如果没有其他方法可以解决此问题,最好的解决方法是什么?
【问题讨论】:
标签: ios uiapplication ios8
使用UIApplicationOpenSettingsURLString。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
【讨论】:
Settings 似乎时不时地崩溃。至少在 iOS8.0.2 中。
从 iOS 8 开始,可以将用户从您的应用程序直接带到“设置”应用程序。它们将深入链接到您应用的特定设置页面,但它们可以返回到顶级设置屏幕。
如果您还支持 iOS 7,则需要先检查是否存在特定的字符串常量。
更新:
如果您的部署目标设置为 8.0 或更高版本,Xcode 6.3 会给您以下警告:
Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true
这是因为该功能从 8.0 开始可用,因此该指针永远不会是 NULL。如果您的部署目标是 8.0+,只需删除下面的 if 语句即可。
if (&UIApplicationOpenSettingsURLString != NULL) {
NSURL *appSettings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:appSettings];
}
【讨论】:
UIApplicationOpenSettingsURLString前面的&有什么作用?
在斯威夫特中:
if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
UIApplication.sharedApplication().openURL(settingsURL)
}
【讨论】:
Swift 3 示例:
if let url = URL(string: UIApplicationOpenSettingsURLString) {
UIApplication.shared.openURL(url)
}
【讨论】: