Как приложения, такие как Truecaller, мессенджер поддерживает синхронизацию с собственным приложением контактов, если какие-либо контакты изменяются в собственном приложении контактов - PullRequest
1 голос
/ 01 июня 2019

Я заметил, что если мы обновим / удалим контакт в приложении родных контактов, такие же изменения мгновенно отражаются в TrueCaller.

Я могу представить два способа получить изменения:

  1. Он обновляет весь список контактов, удаляя все существующие записи в приложении, и запрашивает все записи у нативного контакта с помощью поставщика контактов каждый раз, когда приложение выходит на передний план. Но этот подход может включать в себя запросы к таблице RawContact и таблице данных при каждом запуске. , (Это может быть дорогостоящим с точки зрения вычислений)
  2. Каждый необработанный контакт поддерживает VERSION , которая увеличивается, если в необработанном контакте вносятся какие-либо изменения через собственное приложение. Это можно использовать для модификаций, но для этого потребуется сохранить старые значения в truecaller (или аналогичном приложении), чтобы мы могли их сравнить. Для этого подхода все равно потребуется запросить таблицу RawContacts.

Более поздний подход требует, чтобы Версия также поддерживалась в базе данных приложения TrueCaller.

Для обнаружения любых изменений потребуются следующие операции:

  1. Проверьте версию необработанного контакта в TrueCaller, если версия меньше, чем версия необработанного контакта в базе данных нативных контактов, затем запросите соответствующую таблицу данных для всех изменений.
  2. Если какой-либо необработанный контакт удален из собственного, то он либо удаляется из таблицы RawContact, либо помечается Удалено . Таким образом, нам нужно проверить наличие удаленного флага или отсутствие какой-либо предыдущей записи RawContact в таблице RawContact.
  3. Добавляются другие случаи, например, новый контакт, поэтому будет найдена новая необработанная запись контакта в таблице RawContact и т. Д.

Есть ли лучший способ импортировать контакт в ваше приложение и поддерживать правильную синхронизацию, если в нативном приложении выполняется какая-либо операция, такая как добавление, удаление или изменение?

Конечно, приложение вроде TrueCaller отлично справляется с этой задачей. Мы будем благодарны за любую статью об импорте контактов и т. Д. Любой соответствующий источник.

1 Ответ

1 голос
/ 02 июня 2019

Поскольку такие приложения, как TrueCaller, являются закрытым исходным кодом, нет никакого способа дать вам определенный ответ, однако вариант 2 был бы моим способом управления синхронизацией с контактами устройства.

Вы можете добавить к этому ContentObserver на ContactsContract ContentProvider, который будет вызывать ваш код всякий раз, когда что-то меняется, так что вы можете запустить предложенный код в варианте 2, однако учтите, что контакты, как правило, меняются очень и очень часто, поэтому я бы ограничил такие фоновые синхронизации, если они необходимы один раз в день, чтобы не перегружать батарею / процессор.

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