Некоторые бета-пользователи мое предстоящее приложение сообщают, что список контактов содержит много дубликатов записей. Я использую результат ABAddressBookCopyArrayOfAllPeople
в качестве источника данных для моего настроенного вида таблицы контактов, и это меня озадачивает, что результаты разные из приложения iPhone "Контакты" .
При более пристальном рассмотрении приложения "Контакты" кажется, что дубликаты берутся из записей с "Связанными картами". Скриншоты ниже немного запутались, но, как вы видите в моем приложении справа, "Celine" появляется дважды, в то время как в приложении "Контакты" слева есть только одна "Celine". Если вы нажмете на строку этого единственного контакта, вы получите карту "Унифицированная информация" с двумя "Связанными картами" (как показано в центре, я не использовал контактные данные Celine, потому что они не подходили на один снимок экрана):
Проблемы вокруг "Связанных карт" довольно a несколько тем on форумы Apple для конечных пользователей, но кроме того, что многие указывают на страница поддержки 404, я не могу реалистично обойти исправления всех адресных книг моих пользователей приложений. Я бы очень хотел иметь дело с ним элегантно и не беспокоить пользователя. Хуже того, кажется, что я не единственная проблема с этой проблемой, поскольку WhatsApp показывает тот же список, содержащий дубликаты контактов.
Для того, чтобы быть ясным о происхождении дублированных контактов, я не храню, не кэширую и не пытаюсь быть умным в отношении массива ABAddressBookCopyArrayOfAllPeople
. Таким образом, дубликаты записей поступают непосредственно из вызова API.
Кто-нибудь знает, как бороться с этими связанными картами или обнаруживать их, предотвращая появление дубликатов записей? Приложение Apple Contacts делает это, как остальные могут сделать это тоже?
ОБНОВЛЕНИЕ: я написал библиотеку и поместил ее на Cocoapods, чтобы решить эту проблему. См. Мой ответ ниже