在我的 iPhone 应用程序中,当我点击我拥有的电子名片时,我想将电子名片保存到我的 iPhone 通讯录中。
我怎样才能做到这一点?
我在应用商店看到了一个应用程序,它可以做到这一点:
http://itunes.apple.com/us/app/read-vcard/id402216831?mt=8
谢谢
在我的 iPhone 应用程序中,当我点击我拥有的电子名片时,我想将电子名片保存到我的 iPhone 通讯录中。
我怎样才能做到这一点?
我在应用商店看到了一个应用程序,它可以做到这一点:
http://itunes.apple.com/us/app/read-vcard/id402216831?mt=8
谢谢
iOS9 引入的新联系人框架,使用 Swift4 将 vCard 数据保存到 iPhone 的联系人中变得更加容易和简单。
import Contacts
func saveVCardContacts (vCard : Data) { // assuming you have alreade permission to acces contacts
if #available(iOS 9.0, *) {
let contactStore = CNContactStore()
do {
let saveRequest = CNSaveRequest() // create saveRequests
let contacts = try CNContactVCardSerialization.contacts(with: vCard) // get contacts array from vCard
for person in contacts{
saveRequest.add(person as! CNMutableContact, toContainerWithIdentifier: nil) // add contacts to saveRequest
}
try contactStore.execute(saveRequest) // save to contacts
} catch {
print("Unable to show the new contact") // something went wrong
}
}else{
print("CNContact not supported.") //
}
}
以下是添加用户信息的代码iPhone's Contact
。
正如我告诉你的那样,我对 . 的任何内容一无所知,但是malinois 在他们的答案中发布的vCard
这段代码可能有用:
ABAddressBookRef addressBook = ABAddressBookCreate(); // create address book record
ABRecordRef person = ABPersonCreate(); // create a person
NSString *phone = @"0123456789"; // the phone number to add
//Phone number is a list of phone number, so create a multivalue
ABMutableMultiValueRef phoneNumberMultiValue = ABMultiValueCreateMutable(kABPersonPhoneProperty);
ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,phone,kABPersonPhoneMobileLabel, NULL);
ABRecordSetValue(person, kABPersonFirstNameProperty, @"FirstName" , nil); // first name of the new person
ABRecordSetValue(person, kABPersonLastNameProperty, @"LastName", nil); // his last name
ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue, &anError); // set the phone number property
ABAddressBookAddRecord(addressBook, person, nil); //add the new person to the record
ABRecordRef group = ABGroupCreate(); //create a group
ABRecordSetValue(group, kABGroupNameProperty,@"My Group", &error); // set group's name
ABGroupAddMember(group, person, &error); // add the person to the group
ABAddressBookAddRecord(addressBook, group, &error); // add the group
ABAddressBookSave(addressBook, nil); //save the record
CFRelease(person); // relase the ABRecordRef variable
我无法帮你编码,但我在上一篇文章中找到了 vCard 的通用格式。您可以尝试使用这种格式来完成您的任务。左侧值始终是静态的。希望你能用那种方式。
仅供参考,我发现谷歌搜索...(支持所有 3 个移动平台)
http://learnyii.blogspot.com/2011/04/vcard-qr-code-iphone-android-blackberry.html
func saveContactsfromVCard(vCard : Data)
{
let contactStore = CNContactStore()
do {
let saveRequest = CNSaveRequest() // create saveRequests
let fetchedContacts = try CNContactVCardSerialization.contacts(with: vCard)
for person in fetchedContacts{
let mutableContact = person.mutableCopy() as! CNMutableContact
saveRequest.add(mutableContact, toContainerWithIdentifier: nil)
// saveRequest.add(person, toContainerWithIdentifier: nil) // add contacts to saveRequest
}
try contactStore.execute(saveRequest) // save to contacts
let alert1 = UIAlertController(title: "Successful", message: "Contacts Added Successfully!", preferredStyle: UIAlertController.Style.alert)
alert1.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler:
{(alertAction) in
}))
self.present(alert1, animated: true, completion: nil)
} catch {
print("Unable to show the new contact")
}else{
print("Contacts not added")
}
}
ABMutableMultiValueRef date = ABRecordCopyValue(newPerson, kABPersonDateProperty);
ABMultiValueAddValueAndLabel(date, dateTextField.text, kABPersonAnniversaryLabel, NULL);
ABRecordSetValue(newPerson, kABPersonDateProperty, date,nil);