iPhone: кешированные изображения профиля из Интернета - как узнать, что удаленное изображение изменилось? - PullRequest
4 голосов
/ 29 мая 2010

Я загружаю изображения профиля из Facebook, кэширую их на диске и загружаю в ячейки UITableView.

Теперь мне интересно, как я могу узнать, когда кто-то изменил фотографию своего профиля на Facebook, что мне нужно загрузить новое изображение из Интернета вместо использования одного кэшированного диска.

URL-адрес изображения всегда одинаков. Есть ли легкий способ сделать это без загрузки изображения и сравнения его с локальным файлом?

Ответы [ 4 ]

1 голос
/ 29 августа 2011

Если вы храните изображение профиля пользователя локально, получите профиль "updated_time" http://developers.facebook.com/docs/reference/api/user/ Если это значение изменилось, обновите изображение профиля. Вам не нужно «cron» выполнять эту задачу или проверять каждый раз, когда пользователь подключается - подпишите это поле в API обновлений в реальном времени.

1 голос
/ 28 августа 2011

Профиль пользователя доступен по адресу https://graph.facebook.com//picture. Этот URL никогда не меняется.

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

ASIHTTPRequest - одна из таких библиотек. Его можно настроить для загрузки изображения профиля, сохранения его на диске, а затем только запрашивать, изменилось ли изображение, без загрузки всего изображения.

0 голосов
/ 09 июля 2011

Использование обновлений Facebook в режиме реального времени: http://developers.facebook.com/docs/reference/api/realtime/

Это не тривиально для реализации, но может быть действительно полезным. Когда у меня будет время, я планирую сделать что-то вроде этого: настроить сервер, который получает обратные вызовы. При получении обратного вызова запишите время обновления элемента. Затем я также установил бы конечную точку, к которой мог бы получить доступ любой клиент, передавая любые идентификаторы сущностей, которые он хотел, и он возвратил бы самое последнее время обновления. Это может быть XML или JSON. Таким образом, вам придется сделать две вещи. 1) Изначально добавьте ваш список наблюдаемых объектов на мой сервер. 2) Чтобы проверить наличие обновлений, сделайте один вызов со списком идентификаторов сущностей, вернитесь к списку последних обновлений идентификаторов и обновите кэш соответствующим образом.

Было бы здорово, если бы я мог сделать такую ​​вещь общедоступной, а? : -)

0 голосов
/ 29 мая 2010

По моим проверкам, URL профиля в Facebook будет меняться всякий раз, когда пользователь меняет свое изображение профиля. Вы можете проверить это самостоятельно, но для этого нет документации. Используйте это на свой страх и риск:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...