Sono nuovo di swift e i metodi che sto trovando sono deprecati per quanto riguarda il mio problema. Sto creando un'app di directory e sto prelevando i dati dei contatti da un'API, non dalla rubrica del telefono.Come creare un file vCard/vcf da utilizzare nel foglio di condivisione?
In iOS, se si accede alla rubrica, è possibile selezionare un contatto e scegliere "Condividi contatto" che visualizza un foglio di condivisione. Voglio questa esatta funzionalità nella mia app.
ho penso c'ho Share Sheets capito, ed ecco il mio codice per questo:
@IBAction func actShare(sender: AnyObject) {
let activityViewController = UIActivityViewController(activityItems: ["text" as NSString], applicationActivities: nil)
presentViewController(activityViewController, animated: true, completion: {})
}
voglio cambiare "text" as NSString
essere una vCard, come quello è l'oggetto che le azioni iOS dalla rubrica, giusto? Supponendo che abbia ragione, voglio creare una vCard dall'oggetto contatto della mia app per condividerla con app appropriate (email, sms, ecc.).
Come posso ottenerlo in Swift? Se sbaglio, per favore correggimi e mostrami cosa devo fare. Grazie.
EDIT: Ok, ecco le mie modifiche.
@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")
}
e
func createContact() -> CNMutableContact {
let contactCard = CNMutableContact()
contactCard.givenName = "John"
contactCard.familyName = "Doe"
contactCard.emailAddresses = [
CNLabeledValue(label: CNLabelWork, value: "[email protected]")
]
return contactCard
}
Tuttavia, quando si fa clic sul pulsante di condivisione e porta il mio foglio di quota, ho selezionare l'applicazione che voglio condividere per e non aggiunge/collegare il contatto dati come previsto. Come posso realizzare questo?
Thank you - Ho appena aggiornato il mio post iniziale con una nuova domanda. Penso che la tua risposta lo risolva, comunque. Ci proverò e tornerò da te.Molto apprezzato! –
Grazie mille! Ha funzionato perfettamente. Lo capisco adesso. Ho un'ultima domanda, comunque. Quando condivido il contatto, il file .vcf ha un nome lungo come "6DD3C04D-08C1-44C7-8A7E-F08C6F0CB5CD.vcf". Posso cambiarlo in JohnnyAppleseed.vcf, proprio come si ottiene quando si condivide un contatto dalla propria rubrica? EDIT: Oh, ho capito! Ho trascurato .URLByAppendingPathComponent (NSUUID(). UUIDString). Grazie mille! –
'CNContactFormatter' ti aiuterà lì. Ho aggiornato il codice per mostrare come potresti usarlo. Tornerà alla stringa UUID se il contatto non ha un nome (per qualsiasi motivo) o se si condividono più contatti contemporaneamente (nel qual caso probabilmente non si desidera utilizzare il nome). –