2016-06-15 1 views
2

Я вытаскиваю свои волосы с утра, пытаясь загрузить изображения (веб-изображение) из ковша Amazon S3 и кешируйте его. Каким бы ни был подход, я ударил по тому или иному дорожному блоку. Различные способы я пытался добиться этого,iOS: Загрузка изображений AWS S3 и кеширование их для использования в будущем

  1. подклассов NSURLProtocol & Использование SDWebImage, чтобы получить изображение, как показано в блоге here. Проблема с этим подходом в том, что метод canInitWithRequest подкласса протокола никогда не будет вызван даже жестко. Я зарегистрировал свой класс подкласса NSURLProtocol.
  2. Планируется использовать SDWebImage и другие библиотеки напрямую, но мы не можем этого сделать, так как нет необходимости устанавливать заголовки авторизации в SDWebImage, даже жестко, если мы попытаемся установить его, SDWebImage будет игнорировать его при создании NSMutableURLRequest для загрузка.

Так что сейчас я остался с возможностью либо использовать Amazon SDK, чтобы загрузить изображение, а затем кэшировать его с помощью SDImageCache в SDWebImage в самостоятельно, или мне нужно добавить исходный код SDWebImage в мой проект и я необходимо изменить его источник, чтобы взять заголовок авторизации.

Пожалуйста, дайте мне знать, если есть лучший способ достичь этого, было бы здорово, если бы я мог указать на то, что было бы лучшим способом добиться того, что я пытаюсь сделать.

Заранее спасибо.

+0

Вы можете использовать AWS SDK для iOS или попробовать использовать Мобильный концентратор AWS https://aws.amazon.com/mobile/ –

+0

@ RohanDubal Да, я могу использовать SDK AWS, но проблема в том, что он не поддерживает кеширование из коробки, что является моей главной задачей. – iamyogish

+0

Вы можете использовать Мобильный концентратор и включить функцию загрузки файлов/содержимого, которая загружает и хранит файлы в кеше, чтобы вы могли открывать их изначально в приложении, когда захотите. Каков конкретный вариант использования? Соответствует ли вышеупомянутая функция вашему варианту использования? –

ответ

0

Честно говоря, я долгое время рассматривал это сам и был недоволен встроенной системой кеширования, предлагаемой AWS. Вместо этого я решил использовать Kingfisher https://github.com/onevcat/Kingfisher, так как он построен быстро и хорошо используется. Я очень рекомендую его, потому что он очень настраиваемый, но также отлично работает «из коробки»

+0

Привет, Гаррет, я использовал зимородок для своих других проектов. Но проблема в том, что я не могу использовать KF для этой задачи из коробки. Я должен настроить способ загрузки изображений с помощью KF. Например, если я использую аутентификацию REST для S3, мне нужно иметь возможность отправлять заголовки авторизации, которые KF не поддерживает. Если я использую SDK Amazon для загрузки изображений, я не буду загружать изображения с помощью KF, я бы использовал его только для кэширования изображений, загружаемых с помощью Amazon SDK. – iamyogish

+0

Также, пожалуйста, дайте мне знать, как вы загружали изображения с S3 с помощью KF. Вы просто использовали кеш KF для загруженных изображений или вы могли отправлять заголовки аутентификации с использованием KF или есть какой-либо метод, которым вы следовали :). Это очень помогло бы мне. Спасибо – iamyogish

+0

@iamyogish Большой вопрос, в моем случае я смог пользователь KF загрузить изображения. Это было потому, что я сделал свои изображения публичными. Я понимаю, что это не возможность для всех случаев. Согласно документации KF, похоже, вы можете использовать сборку в запросе на загрузку заголовка auth, который вам нужен, используя NSMutableURLRequest, и просто сделайте sur, чтобы сохранить/на конце, чтобы избежать [link] http: // stackoverflow.ком/вопросы/18885587/NSURLConnection авторизации заголовка, не работоспособный –

Смежные вопросы