Search code examples
iosswiftlocationsharingvcf-vcard

Is there a way to create a url vCard with a description below it and share it using swift 4?... iOS Maps do it sharing a marked location


I'm trying to share a location through vCard like this:

var vCardString = [
    "BEGIN:VCARD",
    "VERSION:4.0",
    "N:;Shared Location;;;",
    "FN:Shared Location",
    "item1.URL:http://maps.apple.com/?ll=\(coordinate.latitude),\(coordinate.longitude)",
    "item1.X-ABLabel:map url",
    "END:VCARD"
    ].joined(separator: "\n")

let myData = vCardString.data(using: .utf8)! as NSData
var items = [Any]()
let vCardActivity = NSItemProvider(item: myData!, typeIdentifier: kUTTypeVCard as String)
items.append(vCardActivity)
let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(activityViewController, animated:true, completion: nil)

This actually works but I cannot add a description below the vCard...

I have this

I'm looking for this

I've tried adding another item:

var items = [Any]()
let vCardActivity = NSItemProvider(item: myData!, typeIdentifier: kUTTypeVCard as String)
items.append(vCardActivity)
let myTitle = "This is my title"
items.append(myTitle)
let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(activityViewController, animated:true, completion: nil)

But it only shows the vCard

Thanks a lot


Solution

  • What if you add an address field to the VCard?

    Like this:

    let vCardString = [
            "BEGIN:VCARD",
            "VERSION:4.0",
            "N:;Shared Location;;;",
            "FN:Shared Location",
            "ADR;TYPE=HOME;LABEL=42 Plantation St. Baytown, LA 30314 United States of America:;;42 Plantation St.;Baytown;LA;30314;United States of America",
            "item1.URL:http://maps.apple.com/?ll=25.686613,-100.316116",
            "item1.X-ABLabel:map url",
            "END:VCARD"
            ].joined(separator: "\n")
    

    You will get something like this:

    enter image description here