【发布时间】:2019-02-08 03:04:31
【问题描述】:
我一直在尝试从 Amazon S3 存储桶下载图像(webp 图像)并缓存它。无论我采取什么方法,我都遇到了一些或其他的障碍。我尝试了不同的方式来实现这一点,
- 继承 NSURLProtocol 并使用 SDWebImage 检索图像,如博客文章 here 中所示。这种方法的问题在于,子类协议的 canInitWithRequest 方法永远不会被调用,即使我已经注册了我的子类 NSURLProtocol 类。
- 计划直接使用 SDWebImage 和其他库,但我们不能这样做,因为没有规定在 SDWebImage 中设置 Authorization 标头,即使我们尝试设置它也很困难,SDWebImage 将在创建 NSMutableURLRequest 时忽略它下载。
所以现在我可以选择使用 Amazon SDK 下载图像,然后使用 SDWebImage 的 SDImageCache 独立缓存它,或者我需要将 SDWebImage 源代码添加到我的项目中,然后我需要修改它是获取授权标头的来源。
如果有更好的方法来实现这一点,请告诉我,如果我能提供一些关于实现我想要做的最好方法的指示,那就太好了。
提前致谢。
【问题讨论】:
-
您可以使用适用于 iOS 的 AWS 开发工具包或尝试使用 AWS Mobile Hub aws.amazon.com/mobile
-
@RohanDubal 是的,我可以使用 AWS 开发工具包,但问题是它不支持开箱即用的缓存,这是我主要关心的问题。
-
您可以使用 Mobile Hub 并启用用户文件/内容交付功能,该功能会下载文件并将其存储在缓存中,以便您可以随时在应用程序中本地打开它们。具体用例是什么?上述功能是否满足您的用例?
-
我的用例是,我必须让我的应用程序离线工作。我必须获取项目列表的图像,并且必须将它们缓存在应用程序中。这样当用户没有连接到互联网时,他/她将能够看到图像。不知道Mobile Hub会不会来看看。
-
移动集线器应用程序应该适合您的用例。一定要试一试!
标签: ios swift amazon-web-services amazon-s3 sdwebimage