设备之间的CNContact唯一标识符

4

我在尝试在多个设备之间访问同一个联系人时遇到了一些问题。我的目标是让用户选择一个联系人并选择电话号码和电子邮件地址,然后将其存储在数据库中。如果用户在另一个设备上打开应用程序,我希望选择相同的联系人。

我希望能够使用CNContact.identifier来实现这个功能,但似乎它是一个特定于设备的ID。我可以为每个设备存储标识符,但这需要用户匹配联系人,这不是理想的解决方案。

这似乎不应该很难,但显然我错过了什么。您有什么想法吗?


您不能假设用户在不同的设备上有相同的联系人。 - rmaddy
你是正确的,如果它不存在,就需要注意一些事情。但是在联系人存在于两个地方的情况下,将详细信息提取出来会很好。 - user7616911
仍在寻找解决此问题的方法。我知道苹果不提供解决方案,因此问题是如何最好地自己解决,直到他们提供解决方案。尽管用户不需要在每个设备上拥有相同的CNContacts,但我们大多数人都这样做。任何访问CNContacts的应用程序都不应阻止用户在已同步联系人的所有设备上轻松访问相同的联系人。 - tkhelm
1个回答

1
我使用数据库存储联系人标识符、地址标识符、联系人姓名和地址。然后采取多步骤方法。
搜索联系人: 我尝试基于已保存的联系人标识符查找联系人。
如果我找到一个联系人(标识符匹配)=>太棒了!然后我尝试将找到的联系人与我的地址标识符进行匹配。再次,如果我只找到一个匹配项,那么我们很好!如果没有,我就会尝试查找地址(见下文)。
如果我没有找到任何联系人(没有标识符匹配)=>我尝试基于我之前保存的联系人姓名查找联系人。如果我找到了匹配项,我就会尝试查找相应的地址(见下文)。
搜索地址: 由于此时我有一个CNContact记录与之匹配,我查看他们的每个postalAddresses并将其与我在数据库中存储的Street/city/state/zipcode/country进行比较。
如果我们找到了完美匹配,那么我更新标识符以包括新的地址/联系人标识符。
如果最终没有找到匹配项,我会给用户提供手动从其设备中选择联系人/地址的选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接