Как пользовательское приложение whatsapp обнаруживает изменение в изображении профиля своего контакта?

Я проходил через приложение whatsapp, и я заметил, что он впервые извлекает эскизы с сервера, сохраняет их в кэш-памяти, а затем извлекает их из кэш-памяти вместо сервера, (Подобно растровому изображению lazyloading).

До сих пор я завершил реализацию части битмапа lazyloading.

Однако у меня есть вопрос:

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

Я об этом не знаю. Любая помощь приветствуется.

EDIT:

Использует ли оно push-уведомление, чтобы уведомить клиентские приложения об обновлении соответствующей миниатюры профиля?

Ответы

Ответ 1

Источник: WhatsApp построен на C2DM и XMMP для доставки сообщений. MQTT - это еще один протокол, который используется для минимизации использования батареи.

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

Отвечая на ваш вопрос: Итак, WhatsApp может использовать XMMP push или уведомление о выпуске GCM ( C2DM устарел;]), чтобы сообщить всему клиенту, что произошло какое-то событие и все это клиент должен заботиться о том же. В вашем случае мероприятие должно обновить ваш профиль pic в устройствах ваших друзей в контактах WhatsApp

В вашем случае вы можете использовать GCM для обновления клиентов в отношении таких событий. Я не очень-то разбираюсь в XMPP, но вы также можете посмотреть Smack API (клиентская библиотека Open Source XMPP (Jabber) для мгновенный обмен сообщениями и присутствие) и этот интересный пост

Надеюсь, я ответил на ваш вопрос. Удачи:)

Edit:

GCM - это сервис от Google, который использует постоянное соединение XMPP для связи с устройствами Android. Для достижения этой цели вы можете использовать любой из следующих методов GCM.

Ответ 2

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

Например:

http://yourdomain.com/images/user_id.png?q=modifieddatetime

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

Я не пробовал это на Android, но он должен работать. Обычно я делаю это в своих веб-приложениях.