Iphone 从Facebook同步获取电话号码;统一信息“;通讯录联系人
我需要能够从用户的通讯簿中读取联系人的电话号码。问题是,如果用户选择通过Facebook同步这些联系人,则无法再通过以下代码访问这些联系人(这对未同步的联系人有效): 然而,日志条目是:Iphone 从Facebook同步获取电话号码;统一信息“;通讯录联系人,iphone,ios,objective-c,cocoa,abaddressbook,Iphone,Ios,Objective C,Cocoa,Abaddressbook,我需要能够从用户的通讯簿中读取联系人的电话号码。问题是,如果用户选择通过Facebook同步这些联系人,则无法再通过以下代码访问这些联系人(这对未同步的联系人有效): 然而,日志条目是: [第161行]获取了配置文件:ABMultiValueRef 0x1ddbb5c0,值为0 如果上面的结果都没有给我任何帮助,我怎么知道他们是Facebook用户并获取他们的手机信息呢 来自苹果支持: 我们没有任何将返回统一通讯簿的API 联系方式。但是,您可以检索以下联系人的电话号码: 通过首先使用,在设备上
[第161行]获取了配置文件:ABMultiValueRef 0x1ddbb5c0,值为0
如果上面的结果都没有给我任何帮助,我怎么知道他们是Facebook用户并获取他们的手机信息呢 来自苹果支持:
我们没有任何将返回统一通讯簿的API
联系方式。但是,您可以检索以下联系人的电话号码:
通过首先使用,在设备上的联系人中显示为统一
ABPersonCopyArrayFallLinkedPeople检索所有链接联系人,
然后遍历这些联系人以获取各自的电话
数字。请注意,中的用户界面中未显示的电话号码
通讯簿API不会返回联系人。请参见下面的示例
允许您这样做的代码片段:
-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)在选择person:(ABRecordRef)person后,peoplePickerNavigationController应继续
{
//获取所有链接的联系人
CFArrayRef linkedPerson=abPersonCopyArrayFallLinkedPerson(个人);
//遍历每个链接的联系人以获取电话号码
对于(CFIndex i=0;i
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];
}
// 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);
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
//Fetch all linked contacts
CFArrayRef linkedPerson = ABPersonCopyArrayOfAllLinkedPeople(person);
//Iterate through each linked contact to fetch the phone numbers
for (CFIndex i = 0; i < CFArrayGetCount(linkedPerson); i++)
{
ABRecordRef contact = CFArrayGetValueAtIndex(linkedPerson,i);
ABMutableMultiValueRef multi = ABRecordCopyValue(contact, kABPersonPhoneProperty);
for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++)
{
CFStringRef label = ABMultiValueCopyLabelAtIndex(multi, i);
CFStringRef number = ABMultiValueCopyValueAtIndex(multi, i);
CFRelease(label);
CFRelease(number);
}
CFRelease(multi);
}
CFRelease(linkedPerson);
return YES;