#include <AddressBook/AddressBook.h>
Чтобы получить все адреса электронной почты:
ABAddressBookRef addressbook = ABGetSharedAddressBook();
ABPersonRef user = ABGetMe(addressbook);
ABMultiValueRef emails = ABRecordCopyValue(user, kABEmailProperty);
if(emails)
{
if(ABMultiValueCount(emails) != 0)
{
for(int i=0;i<ABMultiValueCount(emails);i++)
{
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, i);
// Do something with current email string
CFRelease(email);
}
}
CFRelease(emails);
}
Или, чтобы проверитьадрес электронной почты, помеченный как основной:
ABAddressBookRef addressbook = ABGetSharedAddressBook();
ABPersonRef user = ABGetMe(addressbook);
ABMultiValueRef emails = ABRecordCopyValue(user, kABEmailProperty);
if(emails)
{
if(ABMultiValueCount(emails) != 0)
{
CFStringRef primaryIdentifier = ABMultiValueCopyPrimaryIdentifier(emails);
for(int i=0;i<ABMultiValueCount(emails);i++)
{
CFStringRef currentIdentifier = ABMultiValueCopyIdentifierAtIndex(emails, i);
if(currentIdentifier==primaryIdentifier)
{
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, i);
// Do something with primary email string
CFRelease(email);
}
CFRelease(currentIdentifier);
}
CFRelease(primaryIdentifier);
}
CFRelease(emails);
}
Не все потенциальные ошибки обрабатываются в приведенном выше коде, например, ABGetMe()
может вернуть NULL
, если пользователь не создал запись адресной книги длясама.