Как такие приложения, как WhatsApp, отображают контакты, которые используют только приложение?

В приложениях, которые используют проверку подлинности телефона, например WhatsApp:

Когда любой пользователь открывает, чтобы проверить его / ее контакты, WhatsApp будет показывать только контакты с вашего телефона, которые используют WhatsApp (как они фильтруют ваши контакты).

Мои мысли о реализации чего-то похожего:

Я могу сохранить всех пользователей в базе данных (когда они аутентифицируются в моем приложении), теперь, когда я загружаю контакты в активности, я проверяю, существует ли контакт в базе данных, и если пользователь существует, то я добавляю его / ее в список.

Проблема:

Если бы я использовал вышеуказанный метод:

Затем, допустим, у меня есть 10000 пользователей в базе данных, тогда нет смысла перебирать 10000 пользователей каждый раз, когда я хочу показать контакты пользователя внутри моего приложения.

Вопрос:

Как вы думаете, приложения вроде WhatsApp реализуют такую ​​вещь?

1 ответ

Вы должны перебирать своих пользователей с контактами как минимум один раз, но вы можете делать это с умом, как это делает WhatsApp.

Когда пользователь впервые открывается и регистрируется в WhatsApp, он запрашивает у вас разрешение на чтение ваших контактов (с уровня API 23), когда пользователь предоставляет разрешение WhatsApp в фоновом режиме для подключения к своему внутреннему серверу (где они сохраняют все свои данные пользователя) с контактами доступны на устройстве пользователя и в ответ на этот запрос http возвращаются только те числа с информацией об их учетной записи, которые зарегистрированы в WhatsApp, а затем в WhatsApp локально сохраняются устройства пользователя (SQLite или любая связанная с базой данных служба), и когда пользователь открывает активность контактов WhatsApp, он показывает Данные из локальной базы данных пользователей, а не сервера.

Теперь вопрос: что происходит, когда добавляется новый контакт?

WhatsApp будет уведомлен, если пользователь создал новый контакт, а затем WhatsApp снова подключится к своему внутреннему серверу с номером нового контакта. Теперь предположим, что если пользователь не был подключен к Интернету при создании нового контакта, что произойдет?

WhatsApp сохранит номер в другой таблице своей локальной базы данных как не проверенный номер, а затем еще раз, когда пользователь подключится к Интернету, WhatsApp снова подключится к своему внутреннему серверу с тем же типом запроса. Также в контактной активности WhatApp есть опция принудительного обновления, которая делает то же самое, но не в фоновом режиме.

То же самое относится и к удалению контакта, за исключением того, что нет необходимости подключаться к серверу, он фактически удаляет контакт WhatsApp из локальной пользовательской базы данных.

Теперь вопрос в том, каковы преимущества этого?

  • Использование небольших данных, что очень удобно для пользователей
  • Нет необходимости связываться с сервером каждый раз, когда пользователь открывает контактную активность. Что также отлично подходит для пользовательского опыта.
Другие вопросы по тегам