【问题标题】:Does App Store reject submission if NSAllowsArbitraryLoads set to YES?如果 NSAllowsArbitraryLoads 设置为 YES,App Store 会拒绝提交吗?
【发布时间】:2015-10-10 15:02:38
【问题描述】:

iOS 9 涉及的新 ATS 导致许多与 http 相关的功能停止工作。我必须将所有 http 请求 url 添加到白名单中,或者我可以通过将 NSAllowsArbitraryLoads 设置为 YES 来禁用 ATS。

如果NSAllowsArbitraryLoads 已设置为YES,是否有人知道App Store 是否会拒绝提交?

【问题讨论】:

  • 没有明显的拒绝理由,因为 NSAllowsArbitraryLoads 是公共 api 的一部分并已记录在案。如果您可以列出您的应用程序正在使用的所有主机,最好将它们添加到 plist 文件中,而不是使用通配符异常。另请注意,在这种情况下,任何可以阅读纯文本的人都可以轻松访问主机列表:)
  • 我的猜测是,将来它会在应用安装时给用户带来可怕的消息。
  • 有人知道这是否也适用于 macOS 应用程序吗?

标签: ios app-store ios9


【解决方案1】:

所有使用 NSURLConnection、CFURL 或 NSURLSession API 的连接都在为 iOS 9.0 或更高版本以及 OS X 10.11 或更高版本构建的应用程序中使用应用传输安全默认行为。不符合要求的连接将失败。

但是,您可以在应用程序或扩展程序的 Info.plist 文件中指定默认行为的例外情况。将属性列表中的键用于特定例外或关闭应用程序传输安全性。表 1-1 显示了键及其类型,并使用缩进表示结构。

这里是源链接:https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

【讨论】:

    【解决方案2】:

    感谢大家的回答。

    好消息是 Apple Accepted 我的应用程序将 NSAllowsArbitraryLoads 设置为 YES

    UPDATE(感谢@Vijayts): Apple 将在 2016 年 12 月结束后拒绝不符合 ATS 的应用程序。

    Source

    但是,如果您只需要在 web (UIWebView/WKWebView/SafariViewController) 中加载 http:// 资源,那么以下内容就足够了。

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
    </dict>
    

    【讨论】:

    • 那么在 2016 年 12 月之后将 NSAllowsArbitraryLoads 设置为 YES 将不起作用?这不是 ATS 规范的一部分吗?
    • @Henning 似乎是真的。
    • 将接受的答案更改为@Vijayts 的答案不是更好吗?
    【解决方案3】:

    更新:Apple 将在 2016 年 12 月结束后拒绝不符合 ATS 的应用程序。

    Source

    但是,如果您只需要在 web (UIWebView/WKWebView/SafariViewController) 中加载 http:// 资源,那么以下内容就足够了。

    注意:此密钥仅适用于 iOS 10。

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
    </dict>
    

    【讨论】:

    • 影响很大。这是否只影响 iOS 网络 API。 curl等第三方库怎么样?
    • 我认为已经加密的批量数据有例外,比如媒体流。虽然不确定 curl。
    • @Vijayts 另请提及,此键仅在 iOS 10.0+ 中受支持
    • 那么我们在 iOS 8 和 iOS 9 中做了什么?
    • @Henning 查看this 链接并向下滚动到NSAllowsArbitraryLoadsInWebContent 部分。基本上你可以完全禁用 ATS 但启用NSAllowsArbitraryLoadsInWebContent。我认为这意味着对于 iOS 9,ATS 被禁用,但对于 iOS 10+,ATS 仅对 WebViews 禁用,因为NSAllowsArbitraryLoadsInWebContent 会忽略您在NSAllowsArbitraryLoads 中输入的内容。但我还没有对此进行测试。只是按照链接所说的内容进行操作。
    【解决方案4】:

    Apple 似乎改变了计划:

    支持应用传输安全

    为了给您额外的准备时间,此截止日期已 延期,我们将在新的截止日期到来时提供另一次更新 确认的。 https://developer.apple.com/news/?id=12212016b

    【讨论】:

      【解决方案5】:

      我们从 Apple 那里听到的关于 NSAllowsArbitraryLoads 的最新消息是在 2016 年 12 月。 https://developer.apple.com/news/?id=12212016b

      Apple 仍在接受新的应用程序和更新。我的新应用程序于 2017 年 4 月获得批准,NSAllowsArbitraryLoads 设置为 YES。我最近也提交了更新,没有问题没有拒绝。

      【讨论】:

        【解决方案6】:

        我有一个应用程序,它允许用户在执行期间指定要在 Web 视图中显示的 URL。此 URL 可能是 HTTP URL。出于这个原因,我将NSAllowsArbitraryLoads 设置为yes。

        我在 2016 年 12 月之后提交了此应用的更新,没有任何问题。

        我的 plist 还指定了 NSAllowsArbitraryLoadsInWebContent,并且我指定了为我的应用使用的已知 Web 服务激活 TLS 的异常,这些 Web 服务支持 TLS。

        我只是简单地添加了一个评论说明 NSAllowsArbitraryLoadsInWebContent 是不够的,因为我的应用在 iOS 9 上受支持。

        我什至从来没有收到过关于此问题的应用审核问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-10
          • 2015-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-31
          • 2016-12-01
          相关资源
          最近更新 更多