iphone - AddressBook kABPersonEmailProperty 对于某些联系人返回 nil

标签 iphone facebook ios6 contacts addressbook

我使用以下代码来检索用户选择的人员的电子邮件地址

ABMultiValueRef emailMultiValue = ABRecordCopyValue(person, kABPersonEmailProperty);
NSArray *emailAddresses = (__bridge NSArray*)ABMultiValueCopyArrayOfAllValues(emailMultiValue);

自从 iOS6 和 Facebook 集成以来,一切都运行良好。当我选择未链接到 Facebook 帐户的联系人(这意味着我在 FB 上与该联系人不是 friend )时,一切正常,我检索到 2 个电子邮件地址(工作和家庭)。 但是,当我选择通过 Facebook 链接到我的联系人(该联系人还有家庭和工作电子邮件地址以及联系人浏览器中的 Facebook 电子邮件地址)时,emailAddresses 数组为 nil.

有人以前遇到过这个问题或者对此有任何提示吗?

提前致谢!

最佳答案

要过滤掉 Facebook 联系人,您可以检查此人的 kABSourceTypeProperty。如果它返回 kABSourceTypeCardDAV,则它可能来自 Facebook,但它肯定不是本地联系人(它将返回 kABSourceTypeLocal)。

不幸的是,从 iOS 6 开始,没有 Facebook 特定的源类型,因此使用 kABSourceTypeCardDAV 可能会过滤掉您可能真正关心的其他源。无论如何,这里有一些代码;

ABRecordRef source = ABPersonCopySource(person);
NSNumber *sourceTypeRef = (__bridge NSNumber *)((CFNumberRef)ABRecordCopyValue(source, kABSourceTypeProperty)

if ([sourceTypeRef intValue] == kABSourceTypeCardDAV)
    ; // this is probably, maybe, could be a Facebook contact
if ([sourceTypeRef intValue] == kABSourceTypeLocal)
    ; // this is definitely a local contact
if ([sourceTypeRef intValue] == kABSourceTypeExchange)
    ; // this is from an exchange server
// etc...

关于iphone - AddressBook kABPersonEmailProperty 对于某些联系人返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065053/

相关文章:

ios - instagram 和 vine iOS 应用程序如何内联播放视频?

iphone - 如何在 Box2D 中同时检测三个物体之间的碰撞?

iphone - UIViewController没有收到touchesBegan消息

ios - 从 iPhone 应用程序发布到 Facebook 墙的链接

iphone - mfmailcomposer发送邮件的邮件大小限制是多少

ios - iOS 6 上被 EventKit 框架欺负

ios - 适用于 iOS 的 Facebook SDK 3.1 - 在 iOS6 上运行,但在 iOS 5.x 上崩溃

iphone - 显示自定义 UIButton 上的灰色叠加层

java - 我的 ImageView 有一些错误有人知道吗?

facebook - 如何使用图形 API 从 Facebook 群组检索照片?