到目前为止,我们只在应用的ATS设置中设置了NSAllowsLocalNetworking
。
但是,现在我们在聊天功能中引入链接预览。用户发布的链接用于创建包含链接的网页图像和图标的预览。
问题是用户发布的某些链接有明文(HTTP)格式的图片/图片。
这是使用NSAllowsArbitraryLoads
的正确理由吗?
我对ATS执行的当前状态以及用户生成的链接是否是可接受的例外情况不是100%肯定。
(我们使用Kingfisher库在UIImageView中显示这些图像,因此NSAllowsArbitraryLoadsForMedia
无法使用AVFoundation。)
答案 0 :(得分:1)
你不会被拒绝。 Apple在此截止日期的最新更新是:
在WWDC 2016上,我们宣布提交给App Store的应用程序将是 需要在年底支持ATS。给你额外的 准备时间,这个截止日期已经延长,我们将提供 确认新截止日期后的另一次更新。
答案 1 :(得分:1)
虽然我不能确定Apple会考虑什么是正当理由(因为他们还没有开始执行,所以我们没有任何信息可以解决),在应用程序中使用用户驱动的内容似乎就是其中之一需要更广泛的NSAllowsArbitraryLoads
异常的方案。
我建议,为了向Apple展示您已尽其所能确保任何通信,您将采用与最常用技术相反的方法。通常,应用程序将启用ATS(将默认值NSAllowsArbitraryLoads
保留为NO),同时添加禁用某些域的ATS的例外域。如果我是你,我会做相反的事情 - 将NSAllowsArbitraryLoads
设置为YES,因为您无法知道哪些URL可能需要ATS例外,然后为您在应用中控制的域添加例外域(假设有一些主服务器,你可以从中获得大部分应用程序内容)。这样可确保使用ATS标准保护与服务器的通信,而所有已知服务器之外的所有服务器都将免除ATS要求。因此,关闭ATS,但为控制中的域重新打开ATS。
从这个great article的一些常见ATS配置中,您可以看到如何以这种方式进行设置(“示例C:禁用ATS,但有一些例外”):
对我来说,这对Apple来说是一个好兆头,你要尽可能地遵守ATS的精神。