【问题标题】:iOS 11 URL Scheme for specific Settings section stopped working特定设置部分的 iOS 11 URL 方案停止工作
【发布时间】:2018-02-25 11:38:11
【问题描述】:

我的应用使用 URL 方案将用户直接带到设置/常规/关于部分,以下 URL 在 10.3.x 中运行良好。
"App-Prefs:root=General&path=About"

但是,此 URL 方案在 iOS 11 GM 版本中不再适用。它只启动设置应用程序,但不会进一步引导用户。有人知道这是否会在 iOS 11 正式版中出现?提前致谢。

【问题讨论】:

  • 好的,我刚刚将我的 iPhone 升级到 iOS 11。设置 URL 方案只会启动设置应用程序。它不会再深入到任何特定部分。这太令人沮丧了……感谢 Apple!
  • 你有解决办法吗??
  • 尚无已知解决方案。对于发布“工作”解决方案的人,我认为他们已经将设置应用程序打开到特定部分。因此,当 URL 方案启动设置时,它会被带到已经打开的前台显示部分。例如。转到设置中的隐私部分 => 将设置推送到后台 => 使用自定义 URL 方案启动自己的应用程序 => 设置它进入前台显示“隐私”。要测试解决方案是否有效,您必须在使用 URL 方案启动之前关闭“设置”应用。
  • 这些是私有 API,可能会导致您的应用被拒绝。不要使用它们。不过,我还没有找到提供相同功能的合法方式。

标签: ios url-scheme ios11


【解决方案1】:
let url = NSURL(string: "app-settings:root=Privacy&path=LOCATION")! as URL
UIApplication.shared.open(url, options: [:], completionHandler: nil)

对我来说,iOS11 在 iPhone 设备和模拟器上都可以正常工作。

“App-Prefs:”更改为“app-settings:”即可。

【讨论】:

  • 我在 iOS 11.3 模拟器中试过这个,它不适合我。适合您的操作系统版本模拟器是什么?自 iOS beta 1 发布以来,我一直无法完成这项工作。
  • 这将被拒绝。
【解决方案2】:

这在 iOS 11 之后不再有效。

这里是唯一你目前可以做的事情:

打开“设置”应用(: 之后写的任何内容都会被忽略)

UIApplication.shared.open(URL(string: "App-prefs:")!)

打开您的应用设置

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

【讨论】:

    【解决方案3】:

    我没有可行的解决方案,但发现了一些有趣的东西。以下两个 URL 方案都将启动设置应用程序。

    “应用偏好:” “应用程序设置:”

    所以看起来 iOS 完全忽略了 root=xyz&path=123...

    【讨论】:

      【解决方案4】:
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];  
      

      这可能比“应用程序设置”更好但是,我需要打开系统位置启用设置,看起来这在 iOS 11 上无法再解决了

      【讨论】:

        【解决方案5】:

        在收到一些新建议后,我相信我们在iOS11 中能做的最好的事情就是使用以下代码将用户直接带到应用程序自己的设置部分:

        在 Objective-C 中:

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

        我在我的 iPhone SE 上尝试了这个,并且能够启动到应用程序自己的设置部分。

        【讨论】:

          【解决方案6】:

          我使用“app-settings:root=Privacy&path=LOCATION”在 iOS8、iOS9、iOS10 和 iOS1 中工作正常。这是一个很好的解决方案。

          【讨论】:

          • 感谢分享您的解决方案。我在 iOS 11 模拟器中尝试过,但它只启动设置应用程序,看不到位置子菜单。根据我迄今为止的所有研究,这在 iOS 11 中似乎是不可能的,除非 Apple 为你打开了后门(例如,谷歌地图能够将用户直接带入设置应用程序的子部分)。
          猜你喜欢
          • 2018-02-27
          • 2018-02-19
          • 2016-10-22
          • 2014-11-17
          • 2018-05-02
          • 2012-02-20
          • 2020-06-29
          相关资源
          最近更新 更多