【问题标题】:CNContact: Contact Identifier properly changes after saving a contact to deviceCNContact:将联系人保存到设备后,联系人标识符正确更改
【发布时间】:2021-01-30 13:02:41
【问题描述】:

我只在一部 iPhone 11 pro 中遇到了一个奇怪的问题。当我尝试保存新联系人时,我首先保存该联系人并获取contactId,然后保存到我的数据库中。

First log: 2020/10/15 20:22:42:181 EVENT: OTHER Add/Updated Contact with deviceId = 19C34E70-0C79-4A5D-B7BF-A31229A3A157:ABPerson

执行上述步骤后,我得到了带有 :ABPerson 后缀的contactId,并在我的数据库中进行了更新。我们还在观察 CNContactStoreChangeNotification,以获取更改通知。在收到更改通知时,当我们尝试搜索我们添加的同一个新联系人时,我们会为同一个联系人获取新的contactId,因此,我们假设现在通过应用程序添加的联系人被删除并添加了另一个联系人。

2020/10/15 20:22:45:717 [DEVICE_COMPARE]: To Be Added = 7BD48335-F4FD-408B-9807-495F5B34417F
2020/10/15 20:22:45:717 [DEVICE_COMPARE]: To Be Delete = 19C34E70-0C79-4A5D-B7BF-A31229A3A157:ABPerson

【问题讨论】:

    标签: ios cncontact cncontactstore


    【解决方案1】:

    您提到仅在一台设备上看到此问题 - 该设备是否使用与您的其他设备不同的默认通讯簿? (特别是 Google 通讯录)

    我观察到 .identifier 会在您保存到 Google 通讯录后片刻发生变化,但在您保存到 iCloud 通讯录时保持不变。

    【讨论】:

    • 是的,如果在 iOS 中配置了 Google 同步,那么每当我们从我们的应用中添加任何 CNContact 时,Google 都会删除该联系人,然后重新创建具有不同 ID 的相同联系人。而且,我们第一次保存时,联系人有后缀:ABPerson,但是当谷歌删除并重新添加时,联系人ID没有后缀。
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多