基本上我有一个Conversation
具有属性的对象,contact: CNContact?
我想做的是在更新时更新联系信息。我现在正在做的是订阅Notification.Name.CNContactStoreDidChange
通知,从中获取CNNotificationSaveIdentifiersKey
标识符数组userInfo
并比较是否有任何 ID 等于对话的联系人 ID。
问题是没有一个 id 匹配,它们甚至有不同的格式
对话联系人标识符:68269F08-6B22-4B69-BEA1-431805F328D1:ABPerson
通知联系人标识符:6F959AA0-5EEF-4C38-B9C7-BEA57F270927
问题是:这是识别更新联系人的正确方法吗?
这是代码:
//somewhere in the conversation object
NotificationCenter.default.addObserver(forName: Notification.Name.CNContactStoreDidChange, object: nil, queue: .main) { (notification) in
guard
let conversationContact = self.contact,
let userInfo = notification.userInfo,
let indentifiers = userInfo["CNNotificationSaveIdentifiersKey"] as? [String],
let notificationIdentifier = indentifiers.first else {
return
}
print(conversationContact.formattedName ?? "nil name")
print("conversationContact.identifier \(conversationContact.identifier)")
print("notificationIdentifier \(notificationIdentifier)")
if conversationContact.identifier == notificationIdentifier {
self.contact = nil
}
}
```