【问题标题】:AddressBook kABPersonEmailProperty returns nil for some contactsAddressBook kABPersonEmailProperty 为某些联系人返回 nil
【发布时间】:2012-10-25 08:58:44
【问题描述】:

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

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

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

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

提前致谢!

【问题讨论】:

    标签: iphone facebook ios6 contacts addressbook


    【解决方案1】:

    要过滤掉 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...
    

    【讨论】:

      【解决方案2】:

      我找到了一种方法来检查一个人是否是 Facebook 联系人。就我而言,问题是 facebook 联系人不可编辑,所以我不想在我制作的“地址簿更新程序”功能中显示它们。

      (在苹果的地址簿应用程序中,您可以编辑 facebook 联系人,但该应用程序实际所做的是使用新信息创建一个新联系人并将其链接到 facebook 联系人。我不能这样做,因为链接不是iOS 中的公共 API。)

      所以要找到我想忽略的那些 Facebook 联系人,我只需检查当我将名字设置为当前名字时 ABRecordSetValue 是否返回 true,就像这样。

      bool didset = ABRecordSetValue(person, kABPersonFirstNameProperty, ABRecordCopyValue(person, kABPersonFirstNameProperty), nil);
      

      【讨论】:

        【解决方案3】:

        我发现从 iOS6 开始有链接的联系人(普通联系人 facebook twitter 等等......)。

        为了获取所有链接联系人的所有电子邮件,以下帖子帮助了我: iOS 6 address book empty kABPersonPhoneProperty

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多