2014-05-03 35 views
0

在我的peoplePickerNavigationController:shouldContinueAfterSelectingPerson中,我可以从选定的联系人中读取一大堆iOS联系人信息到我的应用程序中。如何从iOS地址簿获取Facebook和自定义社交地址?

我无法弄清楚如何阅读的一个项目是Facebook(和其他社交)地址信息。这是我所得到的,我知道这不太对。问题与我认为的标签有关:

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); 

请指点我在正确的方向。

此外,我还需要检查是否有针对“Google+”的自定义社交条目(我的应用可以在其他位置创建这些条目),如果有,我想要导入该值。我如何去做这件事?

谢谢!

回答

1

叹息

我想通了。以下是我所做的:

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); 
+0

如果您需要了解如何设置社交个人资料,请参阅http://stackoverflow.com/a/23030962/2035473。虽然社交简介是一个令人痛苦的事情。 – erdekhayser