Начиная с iOS 5.1 для этого нет общедоступного API.
Можно было бы надеяться, что ABRecordCopyCompositeName()
получит то, что вы ищете - оно предоставляет "дружественное человеку" имя для записей о персонале и группе - но, увы, возвращает нуль.
Как указал Грэм (предлагая щедрость), прямо спрашивая kABSourceNameProperty
, дает неправильный ответ.
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sources = ABAddressBookCopyArrayOfAllSources(addressBook);
CFIndex i, c = CFArrayGetCount(sources);
ABRecordRef curSource;
// Log each source name.
for (i=0; i<c; i++) {
curSource = CFArrayGetValueAtIndex(sources, i);
NSString *name = (__bridge_transfer NSString *)ABRecordCopyCompositeName(curSource);
NSLog(@"Alas this is null: %@", name);
NSString *directValue = (__bridge_transfer NSString *)ABRecordCopyValue(curSource,kABSourceNameProperty);
NSLog(@"And direct access gives wrong answer: %@", directValue);
}
CFRelease(sources);
CFRelease(addressBook);
Все, что я могу предложить, - это подать радар, чтобы попросить ABRecordCopyCompositeName()
быть сделанным, чтобы сделать любую услугу, которую использует сама Контакты, доступной для всех нас.