【问题标题】:CNContact unique id between devicesCNContact 设备之间的唯一 ID
【发布时间】:2018-07-21 22:49:06
【问题描述】:

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

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

这并不像它应该是困难的,但显然我错过了一些东西。想法?

【问题讨论】:

  • 您不能假设用户在不同设备上拥有相同的联系人。
  • 你是对的,如果不是这样,就必须小心了。但如果两个地方都存在联系人,最好提供详细信息。
  • 仍在寻找解决此问题的方法。我知道 Apple 没有提供解决方案,所以这是一个最好的方式来推出自己的解决方案,直到他们提供。尽管不要求用户在每台设备上都拥有相同的 CNContact,但我们大多数人都这样做。任何访问 CNContacts 的应用程序都不应阻止用户在他们已同步的所有设备上轻松访问同一联系人。

标签: ios swift contacts contacts-framework


【解决方案1】:

最适合我的解决方案是,我将联系人标识符、地址标识符、联系人姓名和地址存储在我的数据库中。然后我采取多步方法。

搜索联系人
我尝试根据我已经保存的存储的contact.identifiers 查找联系人。

如果我找到 1 个联系人(标识符匹配)=> 太好了!然后,我尝试将找到的联系人与我的 address.identifiers 进行匹配。再一次,如果我只找到 1 场比赛,我们很棒!如果没有,我会去尝试寻找地址(见下文)

如果我没有找到联系人(没有匹配的标识符)=> 我会尝试根据我之前保存的联系人姓名来查找联系人。如果我确实找到了匹配项,然后我会尝试找到匹配的地址(见下文)。

搜索地址:
由于此时我有一条我认为匹配的 CNContact 记录,因此我查看了他们的每个邮政地址,并将其与我存储在数据库中的街道/城市/州/邮政编码/国家/地区进行比较。

如果我们找到了完美匹配,那么我会更新我的标识符以包含新的地址/联系人标识符

如果我们最终找不到匹配项,我会为用户提供一个选项,以便从他们的设备中手动选择联系人/地址。

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多