基本的に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
}
}
```