iOS 9中涉及的新ATS导致许多http相关功能停止工作。我必须将所有http请求url添加到白名单中,或者我可以通过将NSAllowsArbitraryLoads
设置为YES
来禁用ATS。
有谁知道如果NSAllowsArbitraryLoads
被设置为YES
, App Store是否会拒绝提交?
谢谢大家的回答。
好消息是苹果Accepted
我的应用程序与NSAllowsArbitraryLoads
设置为YES
。
更新(谢谢@Vijayts):2016年12月底后,苹果将拒绝不符合ATS的应用程序。
来源然而,如果你需要加载一个http://资源只在web (UIWebView/WKWebView/SafariViewController),那么以下应该足够了。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
更新:苹果将在2016年12月底后拒绝不符合ATS的应用程序。
来源然而,如果你只需要在web (UIWebView/WKWebView/SafariViewController)中加载http://
资源,那么以下应该足够了。
注意:此键仅在iOS 10中可用
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
苹果似乎改变了计划:
支持应用程序传输安全
为了给你额外的准备时间,这个截止日期已经延长,我们将提供另一个更新时,一个新的截止日期证实。https://developer.apple.com/news/?id=12212016b
我们从苹果那里听到的关于NSAllowsArbitraryLoads
的最新消息是在2016年12月。https://developer.apple.com/news/?id=12212016b
苹果仍然接受新的应用程序和更新。我的新应用程序在2017年4月获得批准,NSAllowsArbitraryLoads
设置为YES
。我最近也提交了更新,没有问题,没有被拒绝。
所有使用NSURLConnection、curl或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
我有一个应用程序,允许用户指定一个URL在执行期间显示在web视图。此URL可能是HTTP
URL。因此,我将NSAllowsArbitraryLoads
设置为yes。
我在2016年12月之后提交了这个app的更新,没有问题。
我的plist还指定了NSAllowsArbitraryLoadsInWebContent
,我指定了为我的应用程序使用的已知web服务激活TLS的例外,其中支持TLS。
我只是附上了一个评论说明,解释NSAllowsArbitraryLoadsInWebContent
是不够的,因为我的应用支持iOS 9。
我从来没有收到过来自app review的问题