显示Web图像是否有效使用NSAllowsArbitraryLoads?

时间:2017-08-03 16:39:34

标签: ios objective-c swift itunesconnect app-transport-security

到目前为止,我们只在应用的ATS设置中设置了NSAllowsLocalNetworking

但是,现在我们在聊天功能中引入链接预览。用户发布的链接用于创建包含链接的网页图像和图标的预览。

问题是用户发布的某些链接有明文(HTTP)格式的图片/图片。

这是使用NSAllowsArbitraryLoads的正确理由吗?

我对ATS执行的当前状态以及用户生成的链接是否是可接受的例外情况不是100%肯定。

(我们使用Kingfisher库在UIImageView中显示这些图像,因此NSAllowsArbitraryLoadsForMedia无法使用AVFoundation。)

2 个答案:

答案 0 :(得分:1)

你不会被拒绝。 Apple在此截止日期的最新更新是:

  

在WWDC 2016上,我们宣布提交给App Store的应用程序将是   需要在年底支持ATS。给你额外的   准备时间,这个截止日期已经延长,我们将提供   确认新截止日期后的另一次更新。

https://developer.apple.com/news/?id=12212016b

答案 1 :(得分:1)

虽然我不能确定Apple会考虑什么是正当理由(因为他们还没有开始执行,所以我们没有任何信息可以解决),在应用程序中使用用户驱动的内容似乎就是其中之一需要更广泛的NSAllowsArbitraryLoads异常的方案。

我建议,为了向Apple展示您已尽其所能确保任何通信,您将采用与最常用技术相反的方法。通常,应用程序将启用ATS(将默认值NSAllowsArbitraryLoads保留为NO),同时添加禁用某些域的ATS的例外域。如果我是你,我会做相反的事情 - 将NSAllowsArbitraryLoads设置为YES,因为您无法知道哪些URL可能需要ATS例外,然后为您在应用中控制的域添加例外域(假设有一些主服务器,你可以从中获得大部分应用程序内容)。这样可确保使用ATS标准保护与服务器的通信,而所有已知服务器之外的所有服务器都将免除ATS要求。因此,关闭ATS,但为控制中的域重新打开ATS。

从这个great article的一些常见ATS配置中,您可以看到如何以这种方式进行设置(“示例C:禁用ATS,但有一些例外”):

enter image description here

对我来说,这对Apple来说是一个好兆头,你要尽可能地遵守ATS的精神。