带有 Watch Ext 的应用程序的应用程序传输安全设置

App Transport Security settings for App with Watch Ext

在我的手表应用程序中,我需要创建一个 urlsession。但是当我想连接到服务器时,xcode 给了我错误

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

我尝试将 ATS 设置放在 "Watch Ext" plist 中。它不工作。我还尝试将 ATS 设置放在 "Container App" plist 中。仍然出现同样的错误。

什么给了?

例外是 "temporary,",原因很简单,对于推迟采用 ATS 的任何人来说,它们将不再是可用的选择。

您需要保护您的服务器,让您的提供商保护他们的服务器,或者更换提供商。

You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one. If you’re developing a new app, you should use HTTPS exclusively.

Apple 已宣布 HTTPS 将成为一项要求。 ATS 将于 2017 年 1 月 1 日对所有 Apple 平台(包括 watchOS)强制执行。

届时,您提交的任何未采用 ATS 的(新的或更新的)应用程序都将被拒绝。

我正在使用 iPhone 应用程序目标 os 版本为 9.0,watchOS 版本为 2.0。

我在下方添加了 iPhone 应用的 info.plist 和 watchkit 扩展的 info.plist

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key>
   <true/>
</dict>

我成功地能够从 phone 发出 http 请求并观看。

您可以查看示例

问题似乎根本不是 plist 文件的位置。这是由于我如何在 "Exception Domains".

中指定 URL

反正要编辑的plist位置在"Watch Extension"组。如果您触摸 "Watch" 组中的那个(故事板所在的位置),xcode 根本不会 运行 您的应用程序。会出现一些错误。

对于我的情况,我使用的URL有点特殊,例如:http://www.watch.com:90/(最后指定端口)。要使其工作,只需指定主域和结束部分即。

watch.com

就是这样。然后在该组中包含 NSIncludesSubdomain 键。