长期潜伏,第一次海报。如果我犯了n00b错误,请原谅我。
我遇到的问题是以编程方式区分CardDAV来源。
我正在尝试在iphone上找到一个特定的CardDAV源,它对应于我们的cardDAV服务器上的帐户。唯一可以看到应该有帮助的属性是ABSource.kABSourceNameProperty,但这只是每个CardDAV源的一些无意义的字符串,如“Contacts”或“Address Book”,无论用户在手机上使用什么设置。这意味着该应用程序无法确定特定的联系人来源是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帐户。
感谢您的帮助!
答案 0 :(得分:0)
如果联系人来自CardDAV服务器提供的地址簿,您现在可能是此联系人来自的地址簿。一旦你知道地址簿,你就可以确定源/服务器了。
但是,我认为您的问题更多是同步问题。如果系统中的每个vCard都具有唯一标识符(UID)和修订号(REV)以及了解每个属性基数,则可以构建某种自动同步机制。
UID属性:
REV属性(ISO 8601格式的日期/时间):
您可能还需要手动冲突解决机制。
在具有PID属性的vCard 4.0中引入了更复杂的synchronization mechanism。然而,vCard 4.0还没有广泛传播。