Мне так интересно, имея эту проблему, я много пытался найти решение, но не смог.
Моя проблема - сохранение контактных данных и социальных профилей в телефонной книге с использованием кода ниже
func addProfileContact(completion: @escaping ()->Void) {
let contact = CNMutableContact()
addContact(Contact: populateProfileToContact(contact)) { (result) in
switch result{
case .Success(response: let bool):
if bool{
completion()
}
break
case .Error(error: let error):
print(error.localizedDescription)
break
}
}
}
private func populateProfileToContact(_ contact: CNMutableContact) -> CNMutableContact {
if contact.imageData == nil{
contact.imageData = photoData
}
if let firstName = profile?.firstName {
contact.givenName = firstName
}
if let lastName = profile?.lastName {
contact.familyName = lastName
}
if let phone = profile?.phone {
contact.phoneNumbers = [CNLabeledValue(label: CNLabelWork, value:CNPhoneNumber(stringValue: phone))]
}
if let email = profile?.email! as NSString? {
contact.emailAddresses = [CNLabeledValue(label: CNLabelWork, value:email)]
}
contact.socialProfiles = []
if let networks = profile?.networks {
for network in networks {
if let socialNetwork = NetworkUtility.networkWith(slug: network.slug), let url = socialNetwork.url(for: network) {
//here i have used static values instead of original
contact.socialProfiles.append(CNLabeledValue(label: "DisplayName", value: CNSocialProfile(urlString: "UrlValue", username: "Username", userIdentifier: "Provider id", service: "displayName")))
}
}
}
return contact
}
Проблема заключается в том, что после выполнения этого я получаю результат ниже в телефонной книге.
после возврата в приложение оно не соответствует существующему контакту: (