Как программно добавить «Пользовательский ярлык» в адресную книгу iOS? - PullRequest
6 голосов
/ 20 апреля 2010

При добавлении телефона / IMS контакта в адресную книгу iOS вручную можно добавить метку пользователя вместо «Домашняя страница», «Работа», «Другое» * (в IMS).

Как программно создать "Пользовательскую метку" в AddressBook?

1 Ответ

12 голосов
/ 28 октября 2010

У меня был точно такой же вопрос. Я не мог найти ответ, поэтому я просто попробовал метод угадывания и проверки. Кажется, работает следующий код:

CFErrorRef error = NULL; 
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newPerson = ABPersonCreate();
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, @"Jane", &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, @"Smith", &error);

const CFStringRef customLabel = CFSTR( "mylabel" );

//phone
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, @"1-444-444-444", kABPersonPhoneMainLabel, NULL);
ABMultiValueAddValueAndLabel(multiPhone, @"1-333-333-333", kABPersonPhoneMobileLabel, NULL);            
ABMultiValueAddValueAndLabel(multiPhone, @"1-666-666-666", kABOtherLabel, NULL);        
ABMultiValueAddValueAndLabel(multiPhone, @"1-555-555-555", customLabel, NULL); 
ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil);
CFRelease(multiPhone);

ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error);
ABAddressBookSave(iPhoneAddressBook, &error);

if (error != NULL)
{   
    NSLog(@"Error!");   
}

Если вы проверите адресную книгу, вы увидите номер телефона с пользовательской меткой: mylabel

Спасибо: этот пост

А также: этот блог

...