ios - CNCContact 设备之间的唯一 ID

标签 ios swift contacts contacts-framework

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

我希望在这种情况下使用 CNContact.identifier,但它似乎是一个特定于设备的 ID。我可以存储每个设备的标识符,但这需要用户匹配联系人,这并不理想。

这看起来并不难,但显然我错过了一些东西。想法?

最佳答案

适合我的解决方案是,我将联系人标识符、地址标识符、联系人姓名和地址存储在我的数据库中。然后我采取多步法。
搜索联系人 :
我尝试根据我已经保存的存储的 contact.identifiers 查找联系人。
如果我找到 1 个联系人(标识符匹配)=> 太好了!然后我尝试将找到的联系人与我的 address.identifiers 进行匹配。再一次,如果我只找到 1 个匹配项,我们就很棒!如果没有,我就去尝试寻找一个地址(见下文)
如果我找不到联系人(没有匹配的标识符)=> 我尝试根据我之前保存的联系人姓名查找联系人。如果我确实找到了匹配项,那么我会尝试找到匹配的地址(见下文)。
搜索地址:
由于此时,我有一个我认为匹配的 CNContact 记录,我查看他们的每个邮政地址并将其与我存储在我的数据库中的街道/城市/州/邮政编码/国家进行比较。
如果我们找到完美匹配,那么我更新我的标识符以包含新的地址/联系人标识符
如果我们最终没有找到匹配项,我会给用户一个选项,让他们从他们的设备中手动选择联系人/地址。

关于ios - CNCContact 设备之间的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735086/

相关文章:

ios - 如何将同步post请求转换为异步post请求?

Swift 3 - 有什么方法可以强制调用对象的方法吗?

android - SQLiteException 当联系人有照片时无法将 BLOB 转换为字符串。安卓

javascript - 在 Titanium 应用程序中嵌入远程网站的一些内容

ios - 如何在一个 git repo 中拥有多个 pod

ios - 如何使用 Masonry DSL 更新约束?

iphone - 如何在网络应用程序中访问 iPhone 通讯录?

ios - 通过 instagram API 删除 instagram 媒体上的评论

objective-c - 为 Swift 和 Objective-C 构建一个库

ios - SpriteKit/Swift - 当两个节点已经接触时如何检查它们的接触