【问题标题】:How can I share location from my app to WhatsApp in Swift 3如何在 Swift 3 中将位置从我的应用程序共享到 WhatsApp
【发布时间】:2018-01-25 22:29:14
【问题描述】:

我正在尝试将我的 iOS 应用中的位置分享到 WhatsApp,我希望它看起来像这样:

我正在做的是发送带有此代码的 vCard:

 func vCardURL(from coordinate: CLLocationCoordinate2D, with name: String?) -> URL {
    let vCardFileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("Shared Location.loc.vcf")

    let vCardString = [
        "BEGIN:VCARD",
        "VERSION:3.0",
        //"PRODID:-//Apple Inc.//iPhone OS 10.3.2//EN",
        "N:;My Location;;;",
        "FN:My Location",
        "item1.URL;type=pref:https://maps.apple.com/?ll=50.359890\\,12.934560&q=My%20Location&t=m",
        "item1.X-ABLabel:map url",
        "END:VCARD"
        ].joined(separator: "\n")

    do {
        try vCardString.write(toFile: vCardFileURL.path, atomically: true, encoding: .utf8)
    } catch let error {
        print("Error, \(error.localizedDescription), saving vCard: \(vCardString) to file path: \(vCardFileURL.path).")
    }

    print(vCardString)

    return vCardFileURL
} // end of function

// 调用上面的方法

let vURL = LocationVCard.vCardURL(from: self.newLocation.coordinate, with: "Berlin")

                let activityViewController = UIActivityViewController(activityItems: [vURL], applicationActivities: nil)
                self.present(activityViewController, animated: true, completion: nil)

但我总是以这种风格结束,而不是我想要的:

【问题讨论】:

  • 更新:联系whatsapp公司超过2次后没人给我任何答复

标签: ios swift ios10 whatsapp uiactivityviewcontroller


【解决方案1】:

无需将 vCard 字符串保存到文件中,只需将其转换为 Data 并使用 NSItemProvider 和正确的类型标识符 public.vcard 将其包装起来,它就可以正常工作了:

let data = vCardString.data(using: .utf8)! as NSData
let item = NSItemProvider(item: data, typeIdentifier: "public.vcard")
let activityViewController = UIActivityViewController(activityItems: [item], applicationActivities: nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多