Manejo de contactos duplicados debido a tarjetas vinculadas en la API de la libreta de direcciones de iOS

Algunos usuarios beta demi próxima aplicación informan que la lista de contactos contiene muchos registros duplicados. Estoy usando el resultado deABAddressBookCopyArrayOfAllPeople como fuente de datos para mi vista de tabla personalizada de contactos, y me desconcierta que los resultados sean diferentes a los de la aplicación "Contactos" del iPhone.

Al observar más de cerca la aplicación Contactos, parece que los duplicados se originan en las entradas con "Tarjetas vinculadas". Las capturas de pantalla que aparecen a continuación se han confundido un poco, pero como se ve en mi aplicación en el extremo derecho, "Celine" aparece dos veces, mientras que en la aplicación Contactos de la izquierda solo hay una "Celine". Si hace clic en la fila de ese único contacto, obtiene una tarjeta de "Información unificada" con dos "Tarjetas vinculadas"(como se muestra en el centro, no usé los datos de contacto de Celine porque no cabían en una captura de pantalla):

Los problemas en torno a "Tarjetas vinculadas" tienenbastante a pocos temas enForos de Apple para los usuarios finales, pero aparte del hecho de que muchos apuntan a unaPágina de soporte 404, No puedo ir realista arreglando todas las libretas de direcciones de los usuarios de mi aplicación. Me gustaría mucho más tratar con él con elegancia y sin molestar al usuario. Para empeorar las cosas, parece que no soy el único con este problema, ya queWhatsApp está mostrando la misma lista que contiene contactos duplicados.

Solo para dejar en claro los orígenes de los contactos duplicados, no estoy almacenando, almacenando en caché ni tratando de ser inteligente con respecto a la matrizABAddressBookCopyArrayOfAllPeople devoluciones. Así que los registros duplicados provienen directamente de la llamada a la API.

¿Alguien sabe cómo tratar o detectar estas tarjetas vinculadas, evitando que aparezcan registros duplicados? La aplicación Contactos de Apple lo hace, ¿cómo podemos hacer el resto de nosotros también?

ACTUALIZACIÓN: escribí una biblioteca y la puse en Cocoapods para resolver el problema en cuestión. Vea mi respuesta a continuación

Respuestas a la pregunta(5)

Su respuesta a la pregunta