Я новичок в быстроте, и методы, которые я нахожу, устарели относительно моей проблемы. Я создаю приложение каталога, и я извлекаю данные контакта из API, а не из адресной книги телефона.Как создать файл vCard/vcf для использования в общем листе?
В iOS, если вы заходите в свою адресную книгу, вы можете выбрать контакт и выбрать «Поделиться контактом», в котором отображается общий листок. Я хочу эту точную функциональность в своем приложении.
Я думаю я получил Share Sheets выяснило, и вот мой код, что:
@IBAction func actShare(sender: AnyObject) {
let activityViewController = UIActivityViewController(activityItems: ["text" as NSString], applicationActivities: nil)
presentViewController(activityViewController, animated: true, completion: {})
}
Я хочу, чтобы изменить "text" as NSString
быть визитной карточкой, поскольку это объект, который разделяет IOS из адресной книги, не так ли? Предполагая, что я прав, я хочу создать vCard из контактного объекта моего собственного приложения, чтобы поделиться им с соответствующими приложениями (электронная почта, смс и т. Д.).
Как я могу достичь этого в Swift? Если я ошибаюсь, пожалуйста, поправьте меня и покажите мне, что мне нужно сделать. Благодарю.
EDIT: Хорошо, вот мои изменения.
@IBAction func actShare(sender: AnyObject) {
do {
var contactData = NSData()
try contactData = CNContactVCardSerialization.dataWithContacts([createContact()])
let activityViewController = UIActivityViewController(activityItems: [contactData as NSData], applicationActivities: nil)
presentViewController(activityViewController, animated: true, completion: {})
} catch {
print("CNContactVCardSerialization cannot save address")
}
и
func createContact() -> CNMutableContact {
let contactCard = CNMutableContact()
contactCard.givenName = "John"
contactCard.familyName = "Doe"
contactCard.emailAddresses = [
CNLabeledValue(label: CNLabelWork, value: "[email protected]")
]
return contactCard
}
Однако, когда я нажимаю кнопку Отправить и выводит свою долю листа, я выбираю приложение, я хочу поделиться с и не добавлять/присоединить контакт данные по назначению. Как это сделать?
Спасибо - я просто обновил свой первоначальный пост с новым вопросом. Я думаю, что ваш ответ разрешит это. Я попробую и вернусь к тебе.Очень признателен! –
Большое вам спасибо! Это сработало отлично. Я понимаю это сейчас. Однако у меня есть последний вопрос. Когда я разделяю контакт, .vcf имеет длинное имя типа «6DD3C04D-08C1-44C7-8A7E-F08C6F0CB5CD.vcf». Могу ли я изменить это на JohnnyAppleseed.vcf, как и вы, когда вы делитесь контактом с вашей собственной адресной книгой? EDIT: О, я понял! Я упустил .URLByAppendingPathComponent (NSUUID(). UUIDString). Спасибо огромное! –
'CNContactFormatter' поможет вам там. Я обновил код, чтобы показать, как вы можете его использовать. Он вернется к строке UUID, если контакт не имеет имени (по какой-либо причине), или если вы совместно используете несколько контактов одновременно (в этом случае, используя имя, вероятно, не нужно). –