samsung por pasar para contactos como app iphone objective-c cocoa cocoa-touch addressbook

por - pasar whatsapp de android a iphone 2018



¿Hay alguna forma de obtener la tarjeta "Me" de la API de la libreta de direcciones de iPhone? (4)

No existe tal API en el iPhone SDK 2.2.1 y versiones anteriores. Por favor, presente una solicitud en: http://bugreport.apple.com

Así que estoy perplejo en este caso.

En Mac OS X hay una manera fácil de obtener la tarjeta "Yo" (el propietario de la Mac / cuenta) de la API de la libreta de direcciones incorporada.

¿Alguien ha encontrado una forma de averiguar qué contacto (si existe) pertenece al propietario del iPhone?


Puede usar el usuario predeterminado no documentado:

[[NSUserDefaults standardUserDefaults] objectForKey:@"SBFormattedPhoneNumber"];

y luego busque en la libreta de direcciones la tarjeta con ese número de teléfono.

Tenga en cuenta que, dado que el valor predeterminado del usuario no está documentado, Apple podría cambiar en cualquier momento y es posible que tenga problemas para acceder a la tienda de aplicaciones.

Otro enfoque que podría tomar, aunque es mucho más frágil, es mirar el nombre del dispositivo. Si el usuario no lo ha cambiado desde el "iPhone de nombre de usuario" predeterminado Y están usando su nombre real como un iPhone, podría tomar el nombre de usuario de eso. Una vez más, no es la mejor solución de ninguna manera, pero te da algo más que probar.

La respuesta generalmente aceptada a esta pregunta es archivar un Radar con Apple para esta función y solicitar a los usuarios que elijan su tarjeta.


Editar: [Respuesta obsoleta]

No hay API para obtener la tarjeta "yo" porque no hay una tarjeta "yo". La aplicación de contactos del iPhone no tiene forma de marcar una carta como "yo", y la API refleja esto.


Se me ocurrió una solución parcial a esto

puede obtener el nombre del dispositivo de la siguiente manera

NSString *ownerName = [[UIDevice currentDevice] name];

en inglés, un dispositivo se llama originalmente, por ejemplo, ''Joe Blogg''s iPhone''

el romper el nombre

NSRange t = [ownerName rangeOfString:@"’s"]; if (t.location != NSNotFound) { ownerName = [ownerName substringToIndex:t.location]; }

usted puede tomar ese nombre y buscar los contactos

CNContactStore * contactStore = [CNContactStore new];

NSPredicate *usersNamePredicate = [CNContact predicateForContactsMatchingName:usersName]; NSArray * keysToFetch = @[[CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName],CNContactPhoneNumbersKey,CNContactEmailAddressesKey,CNContactSocialProfilesKey, ]; NSArray * matchingContacts = [contactStore unifiedContactsMatchingPredicate:usersNamePredicate keysToFetch:keysToFetch error:nil];

Por supuesto, otros idiomas difieren en la cadena del nombre del dispositivo, por ejemplo, ''iPhone Von Johann Schmidt'', por lo que es necesario realizar más análisis para otros idiomas y solo funciona si el usuario no ha cambiado el nombre del dispositivo en iTunes a algo así como "Joes teléfono ''pero te da un punto de partida

bueno ... te da una variedad de elementos que combinan :) Así que si hay más de un contacto con esa matriz, solo tienes que usar la suerte del pozo e ir con la primera o trabajar a través de varias cartas y tomar lo que necesites de cada una .

Dije que es una solución parcial y, aunque no funcionará para todos los casos de los usuarios, es posible que funcione para muchos de sus usuarios y reduzca un poco la fricción.