Это, кажется, работает для меня, Ее не обнаруживает фейсбук напрямую, но вы могли бы оценить источники дальше и есть социальный профиль связан то есть facebook, и связанный контакт с контактом facebook, тогда вы вполне уверены, что это его facebook. Я использовал это, чтобы получить только те контакты, на которые я мог бы написать. Пользователи могут изменить свою учетную запись создания контактов по умолчанию, но на основе моего теста источник только для контактов Facebook никогда не совпадает с ABAddressBookCopyDefaultSource.
CFArrayRef people = ABAddressBookCopyArrayOfAllPeopleInSource(ab , kABSourceTypeLocal);
AllContacts = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(people), people);
// Remove all the contacts that we cant write back to
for (int i = CFArrayGetCount(AllContacts)-1; i >-1 ; i--)
{
ABRecordRef person = CFArrayGetValueAtIndex(AllContacts, i);
if((ABPersonCopySource(person) !=ABAddressBookCopyDefaultSource(ab)))
{
NSString *fName = (NSString *)CFBridgingRelease(ABRecordCopyValue(person, kABPersonFirstNameProperty));
NSString *lName = (NSString *)CFBridgingRelease(ABRecordCopyValue(person, kABPersonLastNameProperty));
DLog(@"Removed a read only contact %@ %@", fName , lName);
CFArrayRemoveValueAtIndex(AllContacts, i);
}// else its not something you can write back to, like facebook, twitter.
CFRelease(person);
}
во время цикла по адресной книге контактов, петля через отдельные группы .. Все контакты Facebook остаются в FACEBOOK группе .. что путь у может ограничить программу ur. – ibiren
Есть ли способ увидеть, к какой группе принадлежит ABRecord, поскольку я не перебираю контакты по каждой группе, но я использую 'ABAddressBookCopyArrayOfAllPeople()' – runmad