3

我正在尝试将 App Transport Security 密钥添加到我的 Info.plist,如以下 Apple 技术说明https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/# //apple_ref/doc/uid/TP40016240-CH1-SW3(排除部分)

当我编辑 Info.plist 文件时,我做了以下事情:

  1. 单击“信息属性列表”旁边的“+”以创建新的顶级密钥
  2. 单击下拉列表以选择“NSAppTransportSecurity”

但是 Xcode 没有在下拉列表中列出该选项(下面的屏幕截图)。

我是否需要在文本编辑器中打开 Info.plist 文件并手动编辑它?!还是我错过了一些(可能很明显!)步骤?

我正在使用 Xcode 7.0.1

谢谢

在此处输入图像描述

4

2 回答 2

4

Xcode 7.1 在下拉列表中列出了选项(App Transport Security Settings)。在早期版本中,您需要键入原始密钥NSAppTransportSecurity并将类型设置为字典。

于 2015-10-03T15:32:04.263 回答
3

简单地说,它还没有出现在 Xcode 7.0 中

无论如何,您都可以使用 Xcode,但我建议您使用文本编辑器打开 plist 文件并添加它以允许所有域的所有连接:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <!-- .......................... -->
        <!-- Other keys already present -->
        <!-- .......................... -->

        <key>NSAppTransportSecurity</key>
        <dict>

           <key>NSAllowsArbitraryLoads</key>
           <true/>

        </dict>

    </dict>
    </plist>

要将特定例外添加到域列表中,请改为添加:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- .......................... -->
    <!-- Other keys already present -->
    <!-- .......................... -->

    <key>NSAppTransportSecurity</key>
    <dict>

        <key>NSExceptionDomains</key>
        <dict>

            <key>domain.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>

        </dict>
    </dict>

</dict>
</plist>

NSIncludesSubdomains 不是必需的,但允许访问 wiki.domain.com、blog.domain.com 等子域。

有关详细教程,请查看此博客文章

于 2015-10-08T15:04:05.970 回答