【问题标题】:Accessing the Settings app from your app in iOS 8?在 iOS 8 中从您的应用程序访问设置应用程序?
【发布时间】:2014-08-05 10:27:40
【问题描述】:

是否可以通过按钮或任何在 iOS 8 中的应用程序从您自己的应用程序访问设置应用程序。我听说它在 iOS 5 中已经老化,是真的吗?如果没有,iOS 8 中的方法是否发生了变化?如果没有其他方法可以解决此问题,最好的解决方法是什么?

【问题讨论】:

标签: ios uiapplication ios8


【解决方案1】:

使用UIApplicationOpenSettingsURLString

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

【讨论】:

  • Settings 似乎时不时地崩溃。至少在 iOS8.0.2 中。
  • 注意:当您更改设置时,Xcode 会出现崩溃,因为应用程序强制关闭。它可以在没有连接 Xcode 的设备上正常工作。
【解决方案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前面的&有什么作用?
  • 查看是否存在 UIApplicationOpenSettingsURLString 常量的指针。如果你只是测试常数的存在,它会失败。测试指针是否存在是安全的。
  • 这是很有用的功能,但用户是否可以快速返回您的应用程序?
  • 谢谢。正如我所怀疑的那样。您可以帮助他们进入设置页面但无法帮助他们返回,这有点烦人。
  • @ThomasClowes 在 iOS 9 中,您现在在左上角有“返回到‘应用’...”按钮。
【解决方案3】:

在斯威夫特中:

if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
    UIApplication.sharedApplication().openURL(settingsURL)
}

【讨论】:

    【解决方案4】:

    Swift 3 示例:

    if let url = URL(string: UIApplicationOpenSettingsURLString) {
        UIApplication.shared.openURL(url)
    }
    

    【讨论】:

    • 设置应用程序在尝试这样打开时崩溃
    • 错误:XPC 连接中断
    • 通过重置所有设置解决了问题。谢谢
    猜你喜欢
    • 2012-03-28
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    相关资源
    最近更新 更多