ABAddressBook:是否可以获取源的名称?

ABAddressBook: Is it possible to fetch the name of the Source?

我正在开发一个应用程序,它必须从地址簿中检索所有联系人并根据来源(Gmail、iCloud、Outlook、Facebook ecc)显示它们。我已经查过关于这个主题的所有类似的以前的答案:有人找到答案了吗?

是否可以区分这些来源(例如使用邮件地址)?

使用 kABSourceTypePropertykABSourceNameProperty 似乎无效,因为两个 Gmail 帐户将具有相同的名称和相同的类型。

还有,有什么办法可以起一个更有意义的名字吗? 现在我只有这样的名字:

 - name = "" (empty string) for Facebook contacts
 - name = "Card" for iCloud contacts
 - name = "Address Book" for Gmail contacts
 - name = nil for Local Address Book, etc

如果其他人仍然遇到这个问题,我找到了一个针对 kABSourceTypeCardDAV 类型来源(例如 Gmail 和 Yahoo 帐户)的技巧解决方案。

诀窍是访问源 ABRecordRefkABPersonLastNameProperty,即使它应该是 ABPerson-only 属性。结果是一条路径(我认为联系人存储在 phone 中的位置),其中还包含帐户的 mail/name。

仍然不知道如何在 kABSourceTypeExchange 案例中获取帐户名称!