В основном у меня есть объект Conversation
, который имеет свойство contact: CNContact?
, и я хочу обновить контактную информацию при ее обновлении.Сейчас я подписываюсь на уведомление Notification.Name.CNContactStoreDidChange
, получаю массив идентификаторов CNNotificationSaveIdentifiersKey
из userInfo
и сравниваю, равен ли какой-либо из идентификаторов контакта разговора.
Проблема в том, чтони один из идентификаторов не совпадает, они даже имеют другой формат
Идентификатор контакта для разговора: 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
}
}
```