Мне нужно иметь возможность прочитать номер телефона контактов из адресной книги пользователя. Проблема в том, что если пользователь решил синхронизировать эти контакты через Facebook, они больше не будут доступны через следующий код (который работает для несинхронизированных контактов):
ABMultiValueRef phones = ABRecordCopyValue(record, kABPersonPhoneProperty);
DLog(@"Found %ld phones", ABMultiValueGetCount(phones));
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
CFStringRef locLabel = ABMultiValueCopyLabelAtIndex(phones, j);
NSString *phoneLabel =(__bridge NSString*) ABAddressBookCopyLocalizedLabel(locLabel);
NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
CFRelease(phoneNumberRef);
CFRelease(locLabel);
DLog(@" - %@ (%@)", phoneNumber, phoneLabel);
[numbersArr addObject:phoneNumber];
}
Результат журнала: [Line 126] Found 0 phones
Я пытался использовать CFArrayRef userNumbers = ABMultiValueCopyArrayOfAllValues(phoneNumbers);
, но это тоже ничего не возвращает: [Line 118] Got user numbers: (null)
Вот я и пытался копаться в социальных профилях, и это тоже ничего не дает!
// Try to get phone numbers from social profile
ABMultiValueRef profiles = ABRecordCopyValue(record, kABPersonSocialProfileProperty);
CFIndex multiCount = ABMultiValueGetCount(profiles);
for (CFIndex i=0; i<multiCount; i++) {
NSDictionary* profile = (__bridge NSDictionary*)ABMultiValueCopyValueAtIndex(profiles, i);
NSLog(@"TESTING - Profile: %@", profile);
}
DLog(@"Got profiles: %@", profiles);
CFRelease(profiles);
Тем не менее запись в журнале: [Line 161] Got profiles: ABMultiValueRef 0x1ddbb5c0 with 0 value(s)
Если приведенные выше результаты ничего мне не дают, как я должен узнать, что они являются пользователями Facebook, и получить информацию об их телефонах?