Как такие приложения, как WhatsApp, отображают контакты, которые используют только приложение?
В приложениях, которые используют проверку подлинности телефона, например WhatsApp:
Когда любой пользователь открывает, чтобы проверить его / ее контакты, WhatsApp будет показывать только контакты с вашего телефона, которые используют WhatsApp (как они фильтруют ваши контакты).
Мои мысли о реализации чего-то похожего:
Я могу сохранить всех пользователей в базе данных (когда они аутентифицируются в моем приложении), теперь, когда я загружаю контакты в активности, я проверяю, существует ли контакт в базе данных, и если пользователь существует, то я добавляю его / ее в список.
Проблема:
Если бы я использовал вышеуказанный метод:
Затем, допустим, у меня есть 10000 пользователей в базе данных, тогда нет смысла перебирать 10000 пользователей каждый раз, когда я хочу показать контакты пользователя внутри моего приложения.
Вопрос:
Как вы думаете, приложения вроде WhatsApp реализуют такую вещь?
1 ответ
Вы должны перебирать своих пользователей с контактами как минимум один раз, но вы можете делать это с умом, как это делает WhatsApp.
Когда пользователь впервые открывается и регистрируется в WhatsApp, он запрашивает у вас разрешение на чтение ваших контактов (с уровня API 23), когда пользователь предоставляет разрешение WhatsApp в фоновом режиме для подключения к своему внутреннему серверу (где они сохраняют все свои данные пользователя) с контактами доступны на устройстве пользователя и в ответ на этот запрос http возвращаются только те числа с информацией об их учетной записи, которые зарегистрированы в WhatsApp, а затем в WhatsApp локально сохраняются устройства пользователя (SQLite или любая связанная с базой данных служба), и когда пользователь открывает активность контактов WhatsApp, он показывает Данные из локальной базы данных пользователей, а не сервера.
Теперь вопрос: что происходит, когда добавляется новый контакт?
WhatsApp будет уведомлен, если пользователь создал новый контакт, а затем WhatsApp снова подключится к своему внутреннему серверу с номером нового контакта. Теперь предположим, что если пользователь не был подключен к Интернету при создании нового контакта, что произойдет?
WhatsApp сохранит номер в другой таблице своей локальной базы данных как не проверенный номер, а затем еще раз, когда пользователь подключится к Интернету, WhatsApp снова подключится к своему внутреннему серверу с тем же типом запроса. Также в контактной активности WhatApp есть опция принудительного обновления, которая делает то же самое, но не в фоновом режиме.
То же самое относится и к удалению контакта, за исключением того, что нет необходимости подключаться к серверу, он фактически удаляет контакт WhatsApp из локальной пользовательской базы данных.Теперь вопрос в том, каковы преимущества этого?
- Использование небольших данных, что очень удобно для пользователей
- Нет необходимости связываться с сервером каждый раз, когда пользователь открывает контактную активность. Что также отлично подходит для пользовательского опыта.