Kent
Kent

Reputation: 1725

How do I get Facebook and custom social addresses from iOS address book?

In my peoplePickerNavigationController:shouldContinueAfterSelectingPerson I'm able to read a bunch of the iOS Contacts info from the chosen contact into my app.

The one item I can't figure out how to read is the Facebook (and other social) address info. Here's what I've got and I know it's not quite right. The problem has something to do with the label I think:

    ABMultiValueRef socialRef = ABRecordCopyValue(person, kABPersonSocialProfileProperty);
for (int i = 0; i < ABMultiValueGetCount(socialRef); i++) {
    CFStringRef currentSocialLabel = ABMultiValueCopyLabelAtIndex(socialRef, i);
    CFStringRef currentSocialValue = ABMultiValueCopyValueAtIndex(socialRef, i);
    if (CFStringCompare(currentSocialLabel, kABPersonSocialProfileServiceFacebook, 0) == kCFCompareEqualTo) {
        [theContactInfoDictionary setObject:(__bridge NSString *)currentSocialValue forKey:@"theFacebook"];
    }
    CFRelease(currentSocialLabel);
    CFRelease(currentSocialValue);
}
CFRelease(socialRef);

Please point me in the right direction.

Furthermore, I also need to check if there is a custom social entry for "Google+" (my app can create these entries in another place) and if there is, I want to import that value as well. How do I go about doing this?

Thanks!

Upvotes: 0

Views: 379

Answers (1)

Kent
Kent

Reputation: 1725

sigh

And I figured it out. Here's what I did:

    ABMultiValueRef socialRef = ABRecordCopyValue(person, kABPersonSocialProfileProperty);
for (int i = 0; i < ABMultiValueGetCount(socialRef); i++) {
    NSDictionary *socialDictionary = (__bridge NSDictionary *)ABMultiValueCopyValueAtIndex(socialRef, i);
    if ([socialDictionary[@"service"] isEqualToString:(__bridge NSString *)kABPersonSocialProfileServiceFacebook]) {
        [theContactInfoDictionary setObject:(NSString *)socialDictionary[@"username"] forKey:@"theFacebook"];
    } else if ([socialDictionary[@"service"] isEqualToString:(__bridge NSString *)kABPersonSocialProfileServiceTwitter]) {
        [theContactInfoDictionary setObject:(NSString *)socialDictionary[@"username"] forKey:@"theTwitter"];
    } else if ([socialDictionary[@"service"] isEqualToString:@"Google+"]) {
        [theContactInfoDictionary setObject:(NSString *)socialDictionary[@"username"] forKey:@"theGoogle"];
    }
}
CFRelease(socialRef);

Upvotes: 1

Related Questions