Algunos usuarios beta de my upcoming app informan que la lista de contactos contiene una gran cantidad de registros duplicados. Estoy usando el resultado de ABAddressBookCopyArrayOfAllPeople
como la 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.Tratar con contactos duplicados debido a tarjetas vinculadas en la API de la libreta de direcciones de iOS
Al observar más de cerca la aplicación Contactos, parece que los duplicados se originan en entradas con "Tarjetas vinculadas". Las capturas de pantalla siguientes se han ofuscado un poco, pero como puede ver en mi aplicación en el extremo derecho, "Celine" aparece dos veces, mientras que en la aplicación Contactos a la izquierda solo hay una "Celine". Si hace clic en la fila de ese único contacto, obtiene una tarjeta "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):
las cuestiones en torno a "Tarjetas Vinculado" tienen un quitefew topics en Apple's forums para los usuarios finales, pero aparte del hecho de que muchos apuntan a un 404 support page, no puedo ir por ahí de forma realista la fijación de todos las libretas de direcciones de los usuarios de mi aplicación. Me gustaría mucho tratar con elegancia y sin molestar al usuario. Para empeorar las cosas, parece que no soy el único con este problema, ya que WhatsApp is showing the same list containing duplicate contacts.
Solo para aclarar los orígenes de los contactos duplicados, no estoy almacenando, almacenando en caché o tratando de ser inteligente sobre la matriz ABAddressBookCopyArrayOfAllPeople
. Entonces, los registros duplicados provienen directamente de la llamada API.
¿Alguien sabe cómo tratar o detectar estas tarjetas vinculadas, evitando que aparezcan registros duplicados? La aplicación de 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. Ver mi respuesta a continuación
Creo que este es un problema mayor en iOS 6, con los contactos de Facebook. Pero desde que estoy de vuelta en iOS5 no puedo verificar si es igual ... – Jankeesvw
Facebook probablemente también agrega tarjetas vinculadas ... Entonces alguien debe haber pensado en la forma correcta de mostrar una lista, si no es ABAddressBookCopyArrayOfAllPeople – epologee