ios - 如何区分 CardDAV 联系人来源?

标签 ios contacts addressbook

长期潜伏者,首次张贴者。如果我犯了 n00b 个错误,请原谅我。

我遇到的问题是以编程方式区分 CardDAV 源

我试图在 iphone 上找到一个特定的 CardDAV 源,它对应于我们的 cardDAV 服务器上的帐户。我能看到的唯一应该有帮助的属性是 ABSource.kABSourceNameProperty,但这对于每个 CardDAV 源(如“联系人”或“地址簿”)来说只是一些无意义的字符串,无论用户在手机上使用什么设置。这意味着该应用无法确定特定联系人来源是否为 GMail cardDAV、iCloud cardDAV、我们的 CardDAV 等。

例如,以下是具有 iCloud、Exchange、Gmail 和 Facebook 联系人来源的设备的来源类型和名称:

ABManager: 1 of 7 sources: cardDAV - 
ABManager: 2 of 7 sources: exchangeGAL - (null)
ABManager: 3 of 7 sources: cardDAV - Card
ABManager: 4 of 7 sources: exchange - Contacts
ABManager: 5 of 7 sources: exchange - Lync Contacts
ABManager: 6 of 7 sources: exchange - Suggested Contacts
ABManager: 7 of 7 sources: cardDAV - Address Book

无法分辨 3 个 CardDAV 源中的哪一个是 Gmail 还是 iCloud 等。

我如何在 iOS 上比较不同的 CardDAV 联系人来源,并确定哪个属于我们的 CardDAV 服务器?

背景,以防有帮助: 我正在开发一个 iOS 应用程序,帮助用户将联系人从他们现有的联系人来源复制到我们服务器上的 cardDAV 联系人来源。换句话说:用户设置了一个新的 CardDAV 帐户(源通过 .mobileprovision 配置文件安装在 iPhone 上),现在他们运行此应用程序以将联系人复制到新的 CardDav 帐户。

感谢您的帮助!

最佳答案

如果联系人来自 CardDAV 服务器提供的地址簿,您现在可能知道此联系人来自的地址簿。一旦您知道地址簿,您就可以确定来源/服务器。

但是我认为您的问题更多是同步问题。如果您系统中的每个 vCard 都有一个唯一标识符 (UID) 和修订号 (REV),并且知道每个属性的基数,您就可以构建某种自动同步机制。

UID 属性:

REV 属性(ISO 8601 格式的日期/时间):

您可能还需要一个手动冲突解决机制。

一个更复杂的synchronization mechanism在具有 PID 属性的 vCard 4.0 中引入。然而 vCard 4.0 还没有广泛普及。

关于ios - 如何区分 CardDAV 联系人来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381056/

相关文章:

ios - libc++abi.dylib : terminating with uncaught exception of type Il2CppExceptionWrapper on restore IAP

ios - 如何获取IOS中的常用联系人?

ios - 如何在 Swift 中获取 CNContact 电话号码作为字符串?

iphone - 自定义 ABPeoplePickerNavigationController

php - php mysql 如何将列数据转换为行

ios - NSURLSession 下载任务-进度条问题

ios - UIImageView 最初不会在 UITableViewCell 中显示图像

ios - 在 iOS 7 中使用 applicationDidEnterBackground : 应用程序进入后台时无法更新 View

postgresql - 使用 Postgresql 正确搜索联系人(Thomas 或 Tom,或拼写错误)

php - 单击“提交表单”按钮后重新加载时显示隐藏的 div