Radzenie sobie ze zduplikowanymi kontaktami dzięki połączonym kartom w API książki adresowej iOS

Niektórzy użytkownicy betamoja nadchodząca aplikacja zgłaszają, że lista kontaktów zawiera wiele zduplikowanych rekordów. Używam wyniku zABAddressBookCopyArrayOfAllPeople jako źródło danych dla mojego niestandardowego widoku tabeli kontaktów, i zaskakuje mnie, że wyniki różnią się od aplikacji „Kontakty” iPhone'a.

Przy bliższym przyjrzeniu się aplikacji Kontakty wydaje się, że duplikaty pochodzą z wpisów z „Połączonymi kartami”. Poniższe zrzuty ekranu zostały nieco zaciemnione, ale jak widać w mojej aplikacji po prawej stronie, „Celine” pojawia się dwa razy, podczas gdy w aplikacji Kontakty po lewej stronie jest tylko jedna „Celine”. Jeśli klikniesz wiersz tego pojedynczego kontaktu, otrzymasz kartę „Unified Info” z dwiema „połączonymi kartami”(jak pokazano w środku, nie użyłem danych kontaktowych Celine, ponieważ nie pasowały do ​​jednego zrzutu ekranu):

Problemy związane z „połączonymi kartami” mającałkiem a kilka tematów naFora Apple dla użytkowników końcowych, ale oprócz tego, że wiele wskazuje naStrona wsparcia 404, Nie mogę realistycznie obejść naprawiania wszystkich książek adresowych użytkowników mojej aplikacji. Wolałbym sobie z tym poradzić elegancko i bez przeszkadzania użytkownikowi. Co gorsza, wydaje mi się, że nie tylko ja mam ten problem, ponieważWhatsApp pokazuje tę samą listę zawierającą zduplikowane kontakty.

Aby wyjaśnić pochodzenie zduplikowanych kontaktów, nie przechowuję, nie buforuję ani nie staram się być mądry w kwestii tablicyABAddressBookCopyArrayOfAllPeople zwraca. Tak więc zduplikowane rekordy pochodzą bezpośrednio z wywołania interfejsu API.

Czy ktoś wie, jak sobie radzić z tymi połączonymi kartami lub je wykrywać, zapobiegając pojawieniu się duplikatów? Aplikacja Kontakty Apple to robi, jak reszta z nas może to zrobić?

AKTUALIZACJA: Napisałem bibliotekę i umieściłem ją na Cocoapods, aby rozwiązać problem. Zobacz moją odpowiedź poniżej

questionAnswers(5)

yourAnswerToTheQuestion