ユーザーのアドレス帳から連絡先の電話番号を読み取れるようにする必要があります。問題は、ユーザーがこれらの連絡先を 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 ユーザーであることを知り、電話情報を取得できるのでしょうか?