1

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

0 に答える 0